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.
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
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.
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
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