根据特定的重复条件从文本文件中删除重复数据

时间:2018-09-06 04:35:57

标签: awk sed grep

我有一个文本文件,要在其中删除一些行。 该文件的示例内容如下-

v1 has output 1.1
v2 has output 10.2
v3 has output 5.4
v4 has output 1.1
v5 has output 10.2
v6 has output 12
------------------
and so on

如其在1.1和10.2值上方看到的重复几次,我想保留1.1和10.2的前10行,并像它们一样(这些值是不同的,并且以数百个不同的数字表示),但是删除所有后续重复项,即使每次v参数的值都不同,并且还希望保留非重复数据。

我尝试使用uniq进行排序,但是它只会消除相同的匹配重复项,而不是基于特定条件。

sort file.txt | uniq -i

2 个答案:

答案 0 :(得分:1)

这是个awk

awk 'a[$4==1.1 || $4==10.2]++<10 {print;next} !($4==1.1 || $4==10.2)' file
v1 has output 1.1
v2 has output 10.2
v3 has output 5.4
v4 has output 1.1
v5 has output 10.2
v6 has output 12

它使用1.110.2以及所有其他所有内容打印所有行的第10行

答案 1 :(得分:1)

您需要的声音是:

$_POST

例如

awk '++cnt[$NF]<11' file