2010-12-01 40 views
15

que estaba tratando de ordenar un archivo con valores numéricos así:Bash: Ordenar números con exponentes

414e-05 
435e-05 
0.5361 
0.7278 
0.1341 
0.9592 
0.2664 

Con ordenar todos los numers solucionarse a excepción de los que tienen el exponente, ¿hay alguna manera de una especie función para evaluar esta expresión?

Respuesta

28

Si su versión de sort es bastante nuevo, debería apoyar la opción -g (o --General-numérico-especie) si te gusta sus opciones de largo). Se describe como este en el manual Info:

Ordenar numéricamente, usando la función estándar de C strtod a convertir un prefijo de cada línea a un doble precisión en coma flotante número. Esto permite que los números de coma flotante se especifiquen en la notación científica , como '1.0e-34' y '10e100'.

+0

pero no parece -g para ordenar una mezcla * * de números de punto flotante y la notación científica. Tengo sort 8.25 y pone los dos primeros números hasta el final. – HongboZhu

+0

Oh, mi mal. Tengo una configuración regional europea. – HongboZhu

2

Si usted no tiene sort -g, una alternativa que puede obtener es scisort.

+0

Tengo sort 8.23 ​​y la opción "g" no funciona. @mob gracias por la solución. – boczniak767

3

 

perl -e 'print sort { $a<=>$b } <>' < input-file 
Cuestiones relacionadas