在子列上排序

时间:2012-06-12 17:20:12

标签: linux bash

我真的需要你帮忙完成这项任务。我有以下文本文件:

0001030111
0011030611
0003030113 
0002030112          
0006030311
0004030114       
0007030311
0012030612

我想对第7和第8列的结果进行排序,以获得类似的结果:

0001030111
0003030113
0002030112
0004030114
0006030311
0007030311
0011030611
0012030612
      ^^
      Sort by these positions.

但是使用:

排序+0.6 -1.9 -s setup.txt> sorted.txt

我得到的东西没有出现在我想要的顺序中。 (请参阅下文)

0001030111
0002030112
0003030113
0004030114
0007030311
0006030311
0011030611
0012030612
你可以帮帮我吗?非常感谢!!!

2 个答案:

答案 0 :(得分:0)

要使用过时的语法,您可能需要设置一个环境变量来启用它:

_POSIX2_VERSION=201112 sort +0.6 -1.9 -s setup.txt > sorted.txt

或使用现代语法:

sort -k1.7 -k1.8 -s setup.txt > sorted.txt

答案 1 :(得分:0)

使用0.n表示法排序时(不含-k),请回想一下第一列中的第一个字符编号为0.0,并且规范1.n表示由字段分隔符值(defualt space char)定义的第二列数据,也可以设置为-t":"(不在您的示例中)。

所以我认为你的问题的解决方案是(使用你熟悉的语法)

sort +0.6 -0.7 -s setup.txt > sorted.txt
#---------^^^^^--- note change here

抱歉,我现在没办法测试这个。

我希望这会有所帮助。