2016-05-11 22 views
1

第4列にSUPMAのような値を持つすべての行を削除する必要があります。BASH - 特定の行を削除する

私のデータは次のようになります。この例では

abc;def;ghi;SUPMA;klm 
abc;def;ghi;SUPMA;klm 
SUPMA;def;ghi;MA;klm 
abc;def;ghi;SUPMA;klm 
abc;def;ghi;SUP;klm 

、私は第3回と第5回のラインを維持したいです。

これはどのようにbashスクリプトで行うことができますか? AWKを使用できますか?

ここおかげ

+2

はい、はいです。何を試しましたか? – bishop

答えて

2
awk -F";" '$4!="SUPMA"' yourfile.txt 

awkは、その後SUPMAのための4位をテストし、セミコロンでレコードを分割します。デフォルトでは、その条件が満たされると、行が印刷されます。

+0

更新されているので、セミコロンは幸せな場所にあります。 – JNevill

+0

ありがとうございます。現実には、「SUPMA」の値は変数です。ですから、あなたのコマンドを変数で使うことはできますか? – Julien

+0

awkでbash変数を使用するには、 '-v'フラグを使って渡す必要があります:' awk -F ";" -v awkvar = $ bashvar '$ 4!= awkvar'' – JNevill

1
awk -F\; '$4 !~/SUPMA/' file 
    SUPMA;def;ghi;MA;klm 
    abc;def;ghi;SUP;klm 
関連する問題