comando de classificação em unix com classificação numérica

Eu tenho o arquivo1:

"$lvl=57" "$lvl=20" "$lvl=48" "$lvl=17" "$lvl=58" 

Arquivo2 I querer:

"$lvl=17" "$lvl=20" "$lvl=48" "$lvl=57" "$lvl=58" 

Basicamente, classificar numericamente o arquivo1.

Comentários

  • Quando executo um Unix sort simples em seu Arquivo1, sem opções, obtenho seu Arquivo2. O que você está fazendo de diferente? O que você está deixando de fora desta pergunta?

Resposta

Eu gosto de -V –version-sort: ele se comporta muito bem para muitas situações, misturando strings e números

sort -V 

Eu uso essa opção com frequência …

Em alguma direção , ls -v para classificação de versão ls.

Resposta

Você precisa dizer a sort -n para classificar a parte após =:

sort -t = -k 2n 

Comentários

  • Eu estava procurando recentemente ^^. Mas mais um Q. O que -k2n? Isso está relacionado à classificação numérica? obrigado.
  • @KasiyA -k define uma chave de classificação. Veja a página do manual para detalhes. -k2n define uma chave de classificação começando no segundo campo e terminando no final da linha e a torna uma chave de classificação numérica.

Resposta

Descobri que, basta executar sort -h e vai funcionar. Eles o chamam de --human-numberic-sort.

sort -h file1 > file2 

Resposta

use classificar:

sort -n file1 > file2 

-n, –numeric-sort
compare de acordo com o valor numérico da string

 sort -g file1 > file 2 

-g, –general-numeric-sort

Comentários

  • Não, todos aqueles as linhas têm a mesma classificação com sort -n uma vez que não ' t começam com um número. A razão pela qual ele os classifica é a classificação de linha completa de último recurso (lexicamente, não numericamente) feita para linhas com a mesma classificação. Isso classificaria "$lvl=17" antes de "$lvl=2".
  • @St é phaneChazelas obrigado por apontar.
  • Para parafrasear, -n e -g são redundantes aqui, pois a entrada não é numérica . Portanto, essa resposta é enganosa, por isso o voto negativo (observe também que -g e as opções longas são específicas do GNU).
  • mas -g é bom geral-numérico- classificar
  • Que ' s ainda para classificar valores numéricos, a diferença com -n é que ' s não limitado a inteiros decimais. Isso ainda classificaria "$lvl=17" antes de "$lvl=2" como parte da classificação de último recurso.

Resposta

sort -n é o que você deseja usar. Classifica como classificamos os números. sort -k 2 -n file1

Comentários

  • Mas o OP deseja classificar em ordem crescente, que é o padrão. Por que você está sugerindo a ordem inversa?
  • o que está acima está correto quando os campos são separados por tabs ou espaços e não funcionam em OP ' caso.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *