Exemplo file.txt
:
100 foo
2 bar
300 tuu
Ao usar sort -k 1,1 file.txt
, a ordem das linhas não mudará, embora estejamos esperando:
2 bar
100 foo
300 tuu
Como classificar um campo que consiste em números com base no valor numérico absoluto?
-g, --general-numeric-sort
pode ser mais aconselhável. Isso permite ainda mais a notação científica, por exemplo, 1.234E10 etc.Se você estiver classificando strings que são textos e números misturados, por exemplo, nomes de arquivos de registros contínuos, a classificação com
sort -n
não funciona como esperado:Nesse caso, a opção
-V
resolve:da página de manual:
fonte
ls
atravéssed
substituições para remover as letras e deixar apenas números, aparentemente, a saída de cor estava afetando as coisas bem. Portanto, correrls --color=never
também fez diferença.-V
é exatamente o que eu estava procurando. Eu deveria criar o hábito de olhar primeiro as páginas do manual.Bem, a maioria das outras respostas aqui se referem a
No entanto, não tenho certeza se isso funciona para números negativos. Aqui estão os resultados que obtenho com o sort versão 6.10 no Fedora 9.
Arquivo de entrada:
Resultado:
Que obviamente não é ordenado por valor numérico.
Então, eu acho que uma resposta mais precisa seria usar,
sort -n
mas somente se todos os valores forem positivos.PS: Usar
sort -g
retorna os mesmos resultados para este exemploEditar:
Parece que as configurações de localidade afetam como o sinal de menos afeta a ordem ( veja aqui ). Para obter os resultados adequados, acabei de fazer:
fonte
Você deve usar a opção de classificação numérica:
fonte
Use
sort -n
ousort --numeric-sort
.fonte
Você deve fazer o seguinte comando:
sort -n -k1 filename
Isso deve resolver :)
fonte
Use sort -nr para classificar em ordem decrescente. Referir
Ordenar
Consulte a página de manual acima para referências adicionais
fonte
fonte