在linux shell脚本中对多列进行排序

时间:2014-12-14 20:54:53

标签: linux shell sorting

我想对具有多个列的文件进行排序,例如,如果对第一列的一个唯一条目进行排序,则对与该第一个条目相关的第二列进行排序。例如我的输入文件是:

192.168.1.10 10 www.google.it
192.168.4.10 14 www.google.it
192.168.1.10 20 www.google.it
192.168.1.10 15 www.google.it
192.168.5.10 11 www.google.it
192.168.6.10 31 www.google.it
192.168.1.10 24 www.google.it
192.168.6.10 25 www.google.it

如果我想在linux shell中对它进行排序,它应该是这样的:

192.168.1.10 10 www.google.it
192.168.1.10 15 www.google.it
192.168.1.10 20 www.google.it
192.168.1.10 24 www.google.it
192.168.4.10 14 www.google.it
192.168.5.10 11 www.google.it
192.168.6.10 25 www.google.it
192.168.6.10 31 www.google.it

怎么做?

2 个答案:

答案 0 :(得分:1)

man sort,您将获得以下输出:

-k, --key=POS1[,POS2]
       start a key at POS1 (origin 1), end it at POS2 (default end of line). See POS syntax below

sort命令支持多级索引,例如:

sort -t ',' -k1,1 -k3,3 test.txt

首先按第一列排序 test.txt ,然后排序第三列。

答案 1 :(得分:0)

只需使用:

sort file

应该做的伎俩