【发布时间】:2018-11-29 08:09:37
【问题描述】:
我需要删除在同一行中包含两次字符串的所有行。
例子:
hi
hi hello
hi hello hey
hey hi:hello:hi #delete this line
结果:因为最后一行包含两次“hi”。字符串没有被任何固定的分隔符正确分隔,有时它是空格或逗号或冒号,或者可以是任何东西。
hi
hi hello
hi hello hey
如果它是基于列的固定数据,我可以使用:(粗略的想法)
awk '{for(i=1;i<=NF;i++) if($i ~/hi/) c++ ;if(c<2) print $0}'
【问题讨论】:
-
为什么第二行没有删除?它包含字符串
h两次。和l两次。第三行也包含两次字符串he。 -
@monk,我已经发布了解决方案,它会将字段分隔符设置为 `:#`,以防万一您有更多字段分隔符,那么您也可以在代码中提及它们。
-
@jeremysprofile 请看下面的单行字。
-
@karakfa,我承认 =)