У меня есть файл F.tsv с 13 столбцами, последний столбец (13-й столбец) выглядит так:

2.1e-06
0.58
10
8.7e-22
0.0014
0.034
9.5
0.67
0.67
0.68
9.2
8.4e-22
9.7

Я пробовал sort -k 13 F.tsv, но это не сработало, так как это не учитывало научную нотацию (например, 2.1e-06).

Есть ли способ сортировки с учетом научной нотации, например:

8.4e-22
8.7e-22
1.3e-08
1.3e-08
7e-07
2.1e-06
0.0014
0.034
0.58
0.67
0.67
0.68
9.2
9.5
9.7
10
0
Jeff Schaller 14 Ноя 2019 в 20:45
Если вы используете Linux, у вас должна быть реализация GNU sort, которая предоставляет возможность сортировки -g или --general-numeric.
 – 
steeldriver
14 Ноя 2019 в 20:40

1 ответ

Лучший ответ

Я получаю желаемый результат с помощью:

LC_ALL=C sort -g -k 13 F.tsv
1
schrodigerscatcuriosity 14 Ноя 2019 в 20:41
О, я думаю, это сработало! Что означает «LC_ALL=C»?
 – 
Lucas Farinazzo Marques
14 Ноя 2019 в 20:42
Здесь подробное объяснение. Выдержка: Локаль C — это специальная локаль, которая должна быть самой простой локалью. Вы также можете сказать, что в то время как другие локали предназначены для людей, локаль C предназначена для компьютеров
 – 
schrodigerscatcuriosity
14 Ноя 2019 в 20:45
Спасибо за объяснение! Я буду иметь это в виду в следующий раз, когда буду делать такие вещи
 – 
Lucas Farinazzo Marques
14 Ноя 2019 в 21:01