Respuestas:
Eche un vistazo a la página de manual para ordenar ...
-n, --numeric-sort compare according to string numerical value
Así que aquí hay un ejemplo ...
sort -n filename
-g, --general-numeric-sort
podría ser más recomendable usar . Esto permite además la notación científica, por ejemplo, 1.234E10, etc.
Si está ordenando cadenas que son texto y números mixtos, por ejemplo, nombres de archivo de registros continuos, la clasificación con sort -n
no funciona como se esperaba:
$ 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
En ese caso, la opción -V
funciona:
$ 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
desde la página del manual:
-V, --version-sort natural sort of (version) numbers within text
ls
a través de sed
sustituciones para eliminar las letras y dejar sólo números, al parecer, la salida de color estaba afectando cosas así. Así que correr ls --color=never
también marcó la diferencia.
-V
es exactamente lo que estaba buscando. Debería tener el hábito de mirar primero las páginas del manual.
Bueno, la mayoría de las otras respuestas aquí se refieren a
sort -n
Sin embargo, no estoy seguro de que esto funcione con números negativos. Estos son los resultados que obtengo con sort versión 6.10 en Fedora 9.
Fichero de entrada:
-0.907928466796875
-0.61614990234375
1.135406494140625
0.48614501953125
-0.4140167236328125
Salida:
-0.4140167236328125
0.48614501953125
-0.61614990234375
-0.907928466796875
1.135406494140625
Que obviamente no está ordenado por valor numérico.
Entonces, supongo que una respuesta más precisa sería usar sort -n
pero solo si todos los valores son positivos.
PD: usando sort -g
devuelve los mismos resultados para este ejemplo
Editar:
Parece que la configuración regional afecta la forma en que el signo menos afecta el pedido ( consulte aquí ). Para obtener los resultados adecuados, acabo de hacer:
LC_ALL=C sort -n filename.txt
Tienes que usar la opción de ordenación numérica:
sort -n -k 1,1 File.txt
Utilice sort -n
o sort --numeric-sort
.
Utilice sort -nr para clasificar en orden descendente. Referir
Consulte la página de manual anterior para obtener más referencias
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