Unix 排序命令没有给我正确的输出



我有输入文件(测试(,看起来像这样:

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

我正在运行排序命令并尝试找到前 3 个最小值:

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

但它是我的结果(输出.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  --

这显然不是好的结果。

你能帮忙吗?

首先,您需要删除文件中的标题行。
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

最新更新