Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个带有数字的文件。每行一个数字
1234 54332 54321 32452 1234 1234 54321
我想删除每个出现不超过 3 次的数字。
我正在考虑排序然后加入行,然后删除那些没有 3 个单词的行。
我认为有更好的方法,但我不知道足够的 vim 来做到这一点。
有什么提示吗?
正如我在你的问题下评论的那样,我会用 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 1234