按顺序排列的awk / Unix组

时间:2015-05-13 23:35:22

标签: unix awk

假设我们有这个文本文件:

Daisy ABC0002 1
Kevin ABC0001 2
Mike ABC0001 3
John ABC0003 4
Pete ABC0002 5

我们试图得到这样的结果:

Kevin ABC0001 2
Mike ABC0001 3
Daisy ABC0002 1
Pete ABC0002 5
John ABC0003 4

名称之间没有顺序,但在根据ABC000#标签对行进行分组时应考虑最后一列。有什么建议吗?感谢。

1 个答案:

答案 0 :(得分:3)

对于显示的数据,您只需使用:

sort -k2,2 -k3,3

如果第三列中可能有多位数字,请指定数字排序:

sort -k2,2 -k3,3n
sort -k2,2 -k3n,3

例如,给定输入文件:

Daisy ABC0002 1
Kevin ABC0001 2
Mike ABC0001 3
John ABC0003 4
Pete ABC0002 5
Hazel ABC0002 34
Sarah ABC0002 24
Alice ABC0002 11
Zoe ABC0002 9

第3栏中的数字排序

Kevin ABC0001 2
Mike ABC0001 3
Daisy ABC0002 1
Pete ABC0002 5
Zoe ABC0002 9
Alice ABC0002 11
Sarah ABC0002 24
Hazel ABC0002 34
John ABC0003 4

第3栏中的非数字排序

Kevin ABC0001 2
Mike ABC0001 3
Daisy ABC0002 1
Alice ABC0002 11
Sarah ABC0002 24
Hazel ABC0002 34
Pete ABC0002 5
Zoe ABC0002 9
John ABC0003 4

注意Zoe和Pete出现在两个输出中的位置。