2012-06-12 94 views
15

我需要按第三列对第一列进行排序,保留第一列完整[第一列已排序](在Linux中)。 (第二列可能会改变)排序第三列离开第一列和第二列完整(在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 

我尝试了几种排序选择,但我的第二列可排序只但不是第三。

有人可以帮忙吗?

+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意味着排序在第三个字段作为第二密钥。由于没有其他领域,所以没有必要指定-k3,3,但它也不会伤害。

-t:手段界定与:人物台词领域,否则为空白默认使用

更多信息,请参见这太问题Sorting multiple keys with Unix sortsort man page

+0

我认为这将打破第一场的排序。你仍然需要排序第一,然后第三场,即使输入已经排序在第一场 – Pat

+0

@Pat我认为这将做到 - 再次感谢抓住那个..与数据给出的问题是不明显的我。 – Levon

+1

工作得很好。感谢您的帮助。 – user1429246

相关问题