bash对列进行排序,但不对相同的列进行排序

时间:2012-02-07 13:14:48

标签: bash shell sorting

我的文件包含:

9827259163,0,D<br>
9827961481,0,D<br>
9827202228,0,A<br>
9827529897,5,D<br>
9827529897,0#1#5#8,A<br>
9827700249,0#1,A<br>
9827700249,1#2,D<br>
9883219029,0,A<br>
9861065312,0,A<br>

我希望它在第一列的基础上排序,如果第一列中的记录相同,则不要进一步对这些记录进行排序。

$ sort -t, -k1,1 test
  9827202228,0,A
  9827259163,0,D
9827529897,0#1#5#8,A
9827529897,5,D
  9827700249,0#1,A
  9827700249,1#2,D
  9827961481,0,D
  9861065312,0,A
  9883219029,0,A

但我的期望是:

9827202228,0,A
  9827259163,0,D
9827529897,5,D
9827529897,0#1#5#8,A
  9827700249,0#1,A
  9827700249,1#2,D
  9827961481,0,D
  9861065312,0,A
  9883219029,0,A

因为98275298979827700249有两条记录,因此不应进一步排序。

请在bash shell中建议命令

1 个答案:

答案 0 :(得分:9)

添加选项-s

 sort -st, -k1,1 test

输出:

9827202228,0,A
9827259163,0,D
9827529897,5,D
9827529897,0#1#5#8,A
9827700249,0#1,A
9827700249,1#2,D
9827961481,0,D
9861065312,0,A
9883219029,0,A