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