Ответ 1
сортировка с опцией '-g' должна сделать трюк для вас. -g указывает "использовать общее числовое значение" для сортировки
У меня есть файл csv с 7 полями данных. Я хочу отсортировать 7-е поле в обратном порядке (сначала наименьшие значения). 7-е поле данных выглядит следующим образом:
0.498469643137
1
6.98112003175e-10
9.11278069581e-06
Я попытался использовать инструмент сортировки UNIX следующим образом:
$ sort -t"," -n -k -r 7 <my_file>
Проблема, с которой я сталкиваюсь, заключается в том, что сортировка не распознает экспоненциальную форму. Например, sort считает, что 6.98112003175e-10
больше, чем 1
. Как я могу использовать сортировку для сортировки столбца csv, но признать научную нотацию? Заранее спасибо за помощь.
сортировка с опцией '-g' должна сделать трюк для вас. -g указывает "использовать общее числовое значение" для сортировки
Обратите внимание, что ваш язык может принимать другой разделитель:
Например, в русской локализации символ ",
" ограничивает части номера, а не ".
". В этом случае вы должны учитывать переменную LANG.
В моем случае LANG был установлен в ru_RU.KOI8-R
, и поэтому sort -g
дал мне неправильный результат.
Итак - просто чтобы привести пример для тех, кто не знает, как его использовать: вместо "-n" вы используете "-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