awk - ワイルドカードの一致を無視する方法は?

awk - ワイルドカードの一致を無視する方法は?

3番目の列の値に基づいてcsvファイルを処理し、一致する行を別のファイルに保存したいと思います。

#!/bin/bash awk -F, '$3 ~ /0/ {print}' ./inputfile.csv > ./out/output.csv

私が望むのは、3番目の列の値が0ですが、上記のコマンドを使用すると、出力ファイルに3番目の列の値0、10、20、100などが含まれます。 (0 を含むすべての値).

ワイルドカードの一致を無視し、3番目の列に絶対ゼロ値のみを使用するようにawkにどのように指示しますか?

ベストアンサー1

次のことができます。

awk -F, '$3 == "0"' ./inputfile.csv > ./out/output.csv

~パターンマッチングなので、ここでは必要ありません。==リテラル文字列 "0" と一致し、それ以外は一致しません。printコードブロックを指定しないと暗示されるため、対応する声明も削除しました。

構文はコンマよりも複雑になる可能性があるため(引用やエスケープ処理など)、実際のCSV解析ライブラリの使用を検討することもできます。

おすすめ記事