-g选项打破了保守的linux排序



hi我刚刚遇到一个bug,或者更确切地说是我的错误。我正在尝试对一个有5列、3列特定列的文件进行排序。

我正在使用-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:这是我的文件中重现bug的示例。

我在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进行实验验证,并观察这是如何改变排序顺序的。更好的测试用例将包含样本,这些样本可以很容易地揭示你何时得到正确的结果。(

相关内容

  • 没有找到相关文章

最新更新