2017-09-14 65 views
0

我有一個腳本可以刪除給定文件中存在兩個模式的所有行,例如nameXsurnameX。問題是,有時在其他領域在該行進一步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 :)

+0

試'的awk「$ 1!〜V1 || $ 2!〜v2'v1 =「nameX」v2 =「surnameX」/ home/oldfile>/home/newfile' –

+0

$ 1和$ 2是列嗎? –

+0

是的,而'$ 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