按第三列排序,保留第一列和第二列(在linux中)

时间:2012-06-12 23:50:02

标签: linux unix sorting command-line

我需要按第三列对平面文件进行排序,保留第一列完整[第一列已经排序](在linux中)。 (第二栏可能会改变)

示例i / p文件: -

b:di:wave
b:di12:red
b:di12:wave
b:di06:pir

应该是这样的: -

b:di06:pir
b:di12:red
b:di12:wave
bast:di:wave

我尝试了几种排序选项,但我只能按第二列排序,而不是第三列。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:37)

试试这个:

sort  -t: -k1,1 -k3 data.txt

给出:

bast:disp-san-d5-06:piranha 
bast:display-san-12:redbird
bast:display-san-07:waverider
bast:display-san-12:waverider

这将使用第一个字段作为主键,第三个字段作为辅助键,将该行按:

分割为字段

<强>详情:

data.txt包含帖子中的4行。

您可以指定多个字段作为排序键,请参阅man page

-k1,1表示对第一个字段进行排序(从字段1开始到字段1结束,否则它将继续使用该行的其余部分来确定排序)

-k3表示将第3个字段排序为辅助密钥。由于后面没有其他字段,因此没有必要指定-k3,3,但它也不会受到影响。

-t:表示用:字符分隔行中的字段,否则默认使用空白<​​/ p>

更多信息请参阅此问题Sorting multiple keys with Unix sortsort man page