如何删除与模式

时间:2017-09-14 11:13:23

标签: design-patterns awk

我有一个脚本可以删除给定文件中存在两个模式的所有行,例如 nameX surnameX 。问题是,在某些行的其他字段中,nameX可以出现,并删除该行

nameX surnameX sdkflfjffsl sdlfjsd flsdkjsdjf sdlfdf>好的删除

nameY 姓氏 ddsfdsfsfsf sf sdfdfdfdsfdsf fdf fsdf>保持线

nameY surnameX dfdsfsffsfsdf fsfsdfsff nameX fdsfffs>删除,但我不记得。怎么办?

我的代码在

下面
awk '$0!~v1 || $0!~v2' v1="nameX" v2="surnameX" /home/oldfile > /home/newfile

帮助会很高兴:)

1 个答案:

答案 0 :(得分:0)

对于您提供的示例,您只需检查输入中的第一个字段:

awk '!($1~v1 && $2~v2)' v1="nameX" v2="surnameX" /home/oldfile > /home/newfile 

注意,这里我们使用正则表达式匹配,如果您知道"模式"的确切值,更好的方法是使用==(或!=),例如,TomTommy是不同的名称,但都匹配Tom

awk '$1!=v1 || $2!=v2' v1="nameX" v2="surnameX" /home/oldfile > /home/newfile