列のペアが文字列と一致しない場合の行の印刷方法

列のペアが文字列と一致しない場合の行の印刷方法

列1を見ると期待どおりに動作します。

cat /tmp/inputfile | awk -F : '$12 !~ /100/ { print $6,$12,$13}'
cat /tmp/inputfile | awk -F : '$12 ~ /100/ { print $6,$12,$13}'
4726753 100 137

しかし、プロセスの次のステップ(2列を見て印刷しようとすると、ペアが「100 137」でない限り、両方の条件で印刷されます。両方の条件を同時に満たすため(一致しない)ので、私の条件を無視するのでしょうか?

cat /tmp/inputfile | awk -F : '$12,$13 ~ /100 137/ { print $6,$12,$13}'
4726753 100 137
cat /tmp/inputfile | awk -F : '$12,$13 !~ /100 137/ { print $6,$12,$13}'
4726753 100 137

トラブルシューティング/理解はステップ1です。最終結果は、「100 137」と「0 0」を確認し、$ 12または$ 13の両方がこれらのペアのいずれかでない場合にのみ印刷する必要があります。

答え1

あなたの質問を正しく読んだら、フィールド12と13が(100、137)または(0、0)でない場合にのみフィールド6、12、13を印刷します。だから:

awk -F: '! ( ( $12 == 0 && $13 == 0 ) || ( $12 == 100 && $13 == 137 ) ) { print $6, $12, $13 }' inputfile

関連情報