2017-09-14 34 views
0

パターンのあるファイル内のすべての行を削除するスクリプトがあります(名前XsurnameXなど)。問題はいつか、さらにライン内の他のフィールドにnameXが現れることができることであり、それはまたパターンに一致する行を削除する方法

ラインnameXsurnameX sdkflfjffsl sdlfjsd flsdkjsdjf sdlfdf> [OK]を削除するを削除

nameYsurnameY ddsfdsfsfsfのSF sdfdfdfdsfdsf FDF fsdf> nameY

ラインを保つsurnameX dfdsfsffsfs df fsfsdfsff nameX fdsfffs>削除しますが、私はそれを気にしません。どうやって進める ?

awk '!($1~v1 && $2~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 '$0!~v1 || $0!~v2' v1="nameX" v2="surnameX" /home/oldfile > /home/newfile 

ヘルプを下回っていますここでは正規表現のマッチを使用しています。パターンの正確な値が分かっている場合は、など、==(または!=)を使用する方がよいでしょう。とTommyは異なる名前であるが、両者が一致Tom

awk '$1!=v1 || $2!=v2' v1="nameX" v2="surnameX" /home/oldfile > /home/newfile 
関連する問題