Linux删除行不删除最大值

时间:2014-07-30 15:58:06

标签: ubuntu awk sed

我有一个问题控件txt文件。

一个txt文件包含以下示例结构 由制表符分隔(\ t) 它已按名称,desc分数,desc长度

排序
Name  Score  Length

Test1    500   400
Test1    499   400
Test1    499   399
Test1    498   100
Test2    600   200
Test2    600   199
Test2    599   199

我想删除没有Name顶行的行 例如,如下所示

Name  Score  Length

Test1    500   400
Test2    600   200

任何人都有好主意想出来吗? Awk或Sed ..

感谢您的任何信息!

1 个答案:

答案 0 :(得分:4)

由于您的文件已经排序,因此awk生成:

$ awk '!a[$1]++' file
Name  Score  Length

Test1    500   400
Test2    600   200

这可以跟踪出现的第一个字段。一旦它们出现,它们的索引就会增加,因此任何以该值开头的行都会再次出现。

较长的版本,不是那么惯用,可能是:

awk '{if (a[$1]) next; a[$1]++} 1' file