Respostas:
Dê uma olhada na página do manual para classificar ...
-n, --numeric-sort compare according to string numerical value
Então aqui está um exemplo ...
sort -n filename
-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:
$ ls |sort -n
output.log.1
output.log.10
output.log.11
output.log.12
output.log.13
output.log.14
output.log.15
output.log.16
output.log.17
output.log.18
output.log.19
output.log.2
output.log.20
output.log.3
output.log.4
output.log.5
output.log.6
output.log.7
output.log.8
output.log.9
Nesse caso, a opção -V
resolve:
$ ls |sort -V
output.log.1
output.log.2
output.log.3
output.log.4
output.log.5
output.log.6
output.log.7
output.log.8
output.log.9
output.log.10
output.log.11
output.log.12
output.log.13
output.log.14
output.log.15
output.log.16
output.log.17
output.log.18
output.log.19
output.log.20
da página de manual:
-V, --version-sort natural sort of (version) numbers within text
ls
através sed
substituições para remover as letras e deixar apenas números, aparentemente, a saída de cor estava afetando as coisas bem. Portanto, correr ls --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
sort -n
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:
-0.907928466796875
-0.61614990234375
1.135406494140625
0.48614501953125
-0.4140167236328125
Resultado:
-0.4140167236328125
0.48614501953125
-0.61614990234375
-0.907928466796875
1.135406494140625
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 exemplo
Editar:
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:
LC_ALL=C sort -n filename.txt
Você deve usar a opção de classificação numérica:
sort -n -k 1,1 File.txt
Use sort -n
ou sort --numeric-sort
.
Use sort -nr para classificar em ordem decrescente. Referir
Consulte a página de manual acima para referências adicionais
echo " Enter any values to sorting: "
read n
i=0;
t=0;
echo " Enter the n value: "
for(( i=0;i<n;i++ ))
do
read s[$i]
done
for(( i=0;i<n;i++ ))
do
for(( j=i+1;j<n;j++ ))
do
if [ ${s[$i]} -gt ${s[$j]} ]
then
t=${s[$i]}
s[$i]=${s[$j]}
s[$j]=$t
fi
done
done
for(( i=0;i<n;i++ ))
do
echo " ${s[$i]} "
done