如何删除符合模式的行
问题描述:
我有一个脚本可以删除给定文件中存在两个模式的所有行,例如nameX和surnameX。问题是,有时在其他领域在该行进一步nameX能出现,它删除行也如何删除符合模式的行
nameXsurnameX sdkflfjffsl sdlfjsd flsdkjsdjf sdlfdf>确定删除
nameYsurnameY ddsfdsfsfsf SF sdfdfdfdsfdsf FDF fsdf>保持线
nameYsurnameX dfdsfsffsfs df fsfsdfsff nameX fdsfffs>删除,但我不知道它。如何进行 ?
我的代码如下
awk '$0!~v1 || $0!~v2' v1="nameX" v2="surnameX" /home/oldfile > /home/newfile
帮助将appreciatted :)
答
你给,你可以检查输入的第一个字段的例子:
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
试'的awk“$ 1!〜V1 || $ 2!〜v2'v1 =“nameX”v2 =“surnameX”/ home/oldfile>/home/newfile' –
$ 1和$ 2是列吗? –
是的,而'$ 0'是整行 –