-g 选项 break conservative linux 排序

-g option break conservative linux sort

嗨,我只是 运行 遇到了错误,或者更确切地说是我的错误。 我正在尝试按三个特定列对具有 5 列的文件进行排序。

我正在使用 -k 选项。

sort  -k1,1 -k3,3  -k4,4 < abundance_key_60.tsv

SO90    TARA_031_SRF    M00370  0.0004796352593680699   5380.716788521779
SO90    TARA_072_MES    M00370  6.704622779795495   889.5003464019538
WDU TARA_072_MES    M00165  0.00010342611234558623  1372.1512123790574
WDU TARA_046_SRF    M00165  0.00011353279569781544  582.9204804414709
WDU TARA_025_DCM    M00165  0.00028966684296873025  2486.7113286682593

一切正常,然后我意识到我的一列是数字,我为此列添加了 -g 选项。此时排序似乎只按此列过滤:

sort -k1,1 -k3,3  -gk4,4 <  test_.sort.txt 

SO90    TARA_031_SRF    M00370 0.0004796352593680699    5380.716788521779
WDU TARA_025_DCM    M00165  0.00028966684296873025  2486.7113286682593
WDU TARA_046_SRF    M00165  0.00011353279569781544  582.9204804414709
WDU TARA_072_MES    M00165  0.00010342611234558623  1372.1512123790574
SO90    TARA_072_MES    M00370  6.704622779795495   889.5003464019538

我尝试使用 -s 选项但我没有更改结果。 任何帮助表示赞赏!

ps:这是我的文件中重现错误的示例。

我在 ubuntu 16.04 上,默认 bash 并为此分布排序。

您只想为 -k4,4 指定 g,如下所示:

bash$ sort -k1,1 -k3,3 -k4,4g test_.sort.txt
SO90    TARA_031_SRF    M00370 0.0004796352593680699    5380.716788521779
SO90    TARA_072_MES    M00370  6.704622779795495   889.5003464019538
WDU TARA_072_MES    M00165  0.00010342611234558623  1372.1512123790574
WDU TARA_046_SRF    M00165  0.00011353279569781544  582.9204804414709
WDU TARA_025_DCM    M00165  0.00028966684296873025  2486.7113286682593

(通过将数字更改为 6.704622779795495E-10 并观察其如何改变排序顺序进行实验验证。更好的测试用例将包含样本,当您获得正确结果时,这些样本会简单地显示出来。)