删除少于X时间的事件

时间:2013-08-14 22:05:37

标签: vim replace

我有一个带数字的文件。每行一个数字

1234
54332
54321
32452
1234
1234
54321

我想删除每次出现次数不超过3次的数字。

我正在考虑排序然后加入行,然后删除那些没有3个单词的行。

我认为有一种更好的方法,但我不知道这么做。

有任何提示吗?

1 个答案:

答案 0 :(得分:2)

正如我在你的问题上评论的那样,我会用awk来做。当然,vim也可以通过自定义函数来实现。

你可以尝试这一行:

%!awk '{a[$0]++}END{for(x in a)if(a[x]>3)for(y=1;y<=a[x];y++)print x}'

注意,你的例子不太好,因为没有“出现超过3次”的行。如果添加另一个1234行,则上述命令的结果为:

1234
1234
1234
1234