我有一个脚本可以删除给定文件中存在两个模式的所有行,例如 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
帮助会很高兴:)
答案 0 :(得分:0)
对于您提供的示例,您只需检查输入中的第一个字段:
awk '!($1~v1 && $2~v2)' v1="nameX" v2="surnameX" /home/oldfile > /home/newfile
注意,这里我们使用正则表达式匹配,如果您知道"模式"的确切值,更好的方法是使用==
(或!=
),例如,Tom
和Tommy
是不同的名称,但都匹配Tom
awk '$1!=v1 || $2!=v2' v1="nameX" v2="surnameX" /home/oldfile > /home/newfile