每个唯一行仅提取两个匹配项,并丢弃超过3个重复项

时间:2017-12-27 23:39:28

标签: linux awk grep uniq

我想提取最多出现2次的名字。第1列。如果它发生超过2次,那么我只需要获得前2。 例如。 FILE1.TXT

extern const int array[]; // Warning: size of symbol `array' changed from 8 to 16 extern const int *array; // error: conflicting types for 'array'

从上面的文件中,我想要这样的东西: 10000040 1-120 10000040 541-660 10000040 91-210 10000042 1-120 10000043 541-660 10000048 1-120 10000049 1-120 10000049 181-300 10000049 271-390 10000049 361-480

我尝试过uniq和-D但他们没有给我想要的东西。 谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

使用awk

awk '{a[$1]++}a[$1]<3{print}' infile

答案 1 :(得分:0)

awk '++_[$1] < 3' input_file

缩短版ctac_ answer