awkの条件付きif句

awkの条件付きif句

次の記事を検討してください。

foo,1000,boo,A
foo,1000,boo,B
foo,1001,boo,B
foo,1002,boo,D

私たちは次の規則を持っています:

If $2 equal 1000, $4 should be equal A
If $2 equal 1001, $4 should be equal B
If $2 equal 1002, $4 should be equal C

awk上記のルールを単一のコマンドに適用し、$4従わない場合は、履歴を印刷したいと思います。

希望の出力は次のとおりです。

foo,1000,boo,B
foo,1002,boo,D

私は以前試しました:

awk -F, '{if(($2==1000 && $4!=A) || ($2==1001 && $4!=B) || ($4==1002 && $4!=C)){print $0}}'

ベストアンサー1

これを使用してください:

awk -F, '($2==1000 && $4!="A") || ($2==1001 && $4!="B") || ($2==1002 && $4!="C")' file

カーブ括弧には3つの条件があり、そのうちの1つが適用されると線が印刷されます。括弧内の条件はANDで連結されているため、両方を適用する必要があります。

おすすめ記事