私はcsvファイルを持っており、certailフィールドが特定の文字列で終わる場合はawkを使用して行を印刷しようとしています。したがって、たとえば、私は、CSVファイルの下にあります。フィールドの末尾がAWKの文字列と一致する場合の行の印刷
2,efgh,.abcd
4,mnop,.abcd
しかし、私は別の結果を取得しています:
col1,col2,col3
1,abcd,.abcd_efg
2,efgh,.abcd
3,ijkl,.abcd_mno
4,mnop,.abcd
5,qrst,.abcd_uvw
これは私が後に求めている結果です。これは私が使用していますawkコマンドです:
cat file.csv | awk -F"," '{if ($3 ~ ".abcd") print $0}'
とこれは私が取得しています結果である:
1,abcd,.abcd_efg
2,efgh,.abcd
3,ijkl,.abcd_mno
4,mnop,.abcd
5,qrst,.abcd_uvw
Iイベントは以下試したが、それはうまくいきませんでしたので、マッチした何が返されます。
cat file.csv | awk -F"," '{if ($3 ~ ".abcd$") print $0}'
何か問題が発生している可能性がありますか?私はこの結果を得るために間違った表現を使用していますか?
EDIT:これは私がケントのソリューションを試してみましたところ、私が試したが、それはうまくいきませんでした別のコマンドです:
cat file.csv | awk -F"," '$3 ~ "[.]abcd"'
'。 (ドット) 'は任意の文字を意味します – Kent
ありがとうございます。私はそれを '\ .'に変更します。 – CWLiu
@CWLiu: '{print $ 0}'は存在する必要はありません。それは本質的に気をつけます – Inian