UNIX ordenar con valores exponenciales?


Tengo un archivo csv con 7 campos de datos. Quiero ordenar el 7º campo en orden numérico inverso (primero los valores más pequeños). El 7o campo de datos se ve así:

0.498469643137
1
6.98112003175e-10
9.11278069581e-06

He intentado usar la herramienta de ordenación UNIX de esta manera:

$ sort -t"," -n -k -r 7 <my_file>

El problema que estoy teniendo es que sort no reconoce la forma exponencial. Por ejemplo, sort piensa que 6.98112003175e-10 es mayor que 1. ¿Cómo puedo usar ordenar para ordenar una columna csv, pero reconocer la notación científica? Gracias de antemano por el ayudar.

Author: drbunsen, 2011-09-14

3 answers

Ordenar con la opción '-g' debería hacer el truco por usted. - g opción indica 'utilizar valor numérico genérico' para ordenar

 55
Author: Finslicer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-09-14 13:42:38

Tenga en cuenta que su configuración regional puede asumir otro delimitador: Por ejemplo, en la localización rusa, el carácter ',' delimita partes del número en lugar de '.'. En este caso se debe tener en cuenta la variable LANG.

En mi caso LANG se estableció en ru_RU.KOI8-R y así sort -g me dio un resultado incorrecto.

 5
Author: Pavel Kurochkin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-28 11:38:43

Así que - solo para dar un ejemplo para aquellos que no saben cómo usarlo: en lugar de "-n" se utiliza "-g". l = 1,0.3,6.01e-10

sort -t$',' -n example.txt

0.3 1 6.01e-10

sort -t$',' -g example.txt

6.01e-10 0.3 1

 0
Author: amc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-04 17:20:56