我有一个问题控件txt文件。
一个文件包含4列,如果我想要删除列中除最大值之外的行
1.Check First Column Name
2.Check Last Column Values.
3.Remove depends on First Column and Last Column.
Test1 500 400 200
Test1 499 400 200
Test1 499 399 200
Test1 498 100 100
Test2 600 200 150
Test2 600 199 150
Test2 599 199 100
我想删除没有名称顶行的行例如如下所示 姓名分数
Test1 500 400 200
Test1 499 400 200
Test1 499 399 200
Test2 600 200 150
Test2 600 199 150
任何人都有好主意想出来吗? Awk或Sed ..
感谢您的任何信息!
ubuntu awk sed
答案 0 :(得分:1)
这是基于glenn jackman的回答,但是根据我对这个问题的解读正确地测试了这些列。数组max
包含第1列中每个名称的第4列的最大值。在第二次传递期间,我们测试该列是否与最大值匹配。
awk '
NR == FNR {
if ($4 > max[$1]) max[$1] = $4
next
}
$4 == max[$1]
' control.txt control.txt