如何删除包含少于 n 个项目的所有行
我想删除包含少于 n 个项目的所有行,以空格分隔。
假设我想删除包含少于 3 个项目的行。因此,下面的文件:
sdf sdfsdf sdfgsdf sdfsdfsd
sdf sdfsdf
sdf sdfsdf sdfgsdf
sdf sdfsdf sdfgsdf ertert
应该导致:
sdf sdfsdf sdfgsdf sdfsdfsd
sdf sdfsdf sdfgsdf
sdf sdfsdf sdfgsdf ertert
实际上 awk
和 sed
解决方案都是可以接受的。
I want to remove all lines containing less than n number of items, space separated.
Say I want to remove lines containing less than 3 items. So the file below:
sdf sdfsdf sdfgsdf sdfsdfsd
sdf sdfsdf
sdf sdfsdf sdfgsdf
sdf sdfsdf sdfgsdf ertert
Should result in:
sdf sdfsdf sdfgsdf sdfsdfsd
sdf sdfsdf sdfgsdf
sdf sdfsdf sdfgsdf ertert
Actually both awk
and sed
solutions are acceptable.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
这个怎么样:
How about this:
在 vim 中:
另一个选择是
你也可以做一些有趣的事情,比如
In vim:
Another option is
You could also do something interesting like
由于有 vim 标签:
将 2 替换为 n-1。
Since there is a vim tag:
Replace 2 with n-1.
我知道您要求使用 vi 解决方案,但这在 perl 中非常简单:
其中“foo”是您的文件。
I know you asked for a vi solution, but this is so dead simple in perl:
where "foo" is your file.
NF 是记录中的字段数。将 2 替换为你想要的数字
NF is the number of fields in the record. Replace 2 with number you want
希望这有帮助
Hope this helps