Команда сортировки Unix не дает мне правильный вывод - PullRequest
0 голосов
/ 06 июня 2019

У меня есть входной файл (тест), который выглядит так:

MarkerName      Allele1 Allele2 Weight  Zscore  P-value Direction
rs8065651       t       c       2.00    -1.345  0.1787  --
rs12450876      a       g       2.00    -0.496  0.6201  +-
rs7209239       a       t       2.00    1.134   0.2569  ++
rs7210970       a       g       2.00    1.724   0.08462 ++
rs4791114       a       g       2.00    -1.156  0.2476  --
rs10853140      a       g       2.00    0.989   0.3229  ++
rs237316        a       g       2.00    0.738   0.4607  ++
rs11871508      a       g       2.00    -5.527  3.265e-08       --

Я запускаю команду сортировки и пытаюсь найти три самых маленьких значения:

sort -nk 6 test | head -3 > output.txt

но это мой результат (output.txt) Я получаю это:

MarkerName      Allele1 Allele2 Weight  Zscore  P-value Direction
rs7210970       a       g       2.00    1.724   0.08462 ++
rs8065651       t       c       2.00    -1.345  0.1787  --

Это явно не хороший результат.

Не могли бы вы помочь с этим.

1 Ответ

0 голосов
/ 06 июня 2019

Сначала необходимо удалить строку заголовка в файле.
tail -n +2 test

Тогда сортируй. Для сортировки плавающих значений используется флаг -g.
Также вы должны быть уверены, что ваш язык правильный. В противном случае правила сортировки будут влиять на результат.
LC_ALL=C sort -bg --key=6,6

Итак:
tail -n +2 test | LC_ALL=C sort -bg --key=6,6 | head -3

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...