AWK CSV操作

AWK CSV操作

次の内容を含むcsvファイルがあります。

abc;!!!!;22
abc;!!!!;23
23;!!!!!;22

3番目の列に23を含むすべての行を削除したいと思います。

なぜなら最初のものはおそらく23歳でしょう。 3番目の列の一致のみを確認する必要があります。

私は本当にawkソリューションを学びたいので好みます。しかし、誰かがsedを使ってこれを行う方法を教えてくれたら、感動します!

それは私の悪い例に似ています。

awk -F ";" (if $3="23") delete Line

答え1

もう1つのバリエーションは、「3ドルが23と異なる場合は印刷してください」です。

awk -F';' '$3 != 23' file

答え2

アプローチを少し変更すると、すでに機能する可能性があります(テストされていません)。

awk -F ";" '$3 ~ /23/ {next} 1' file

「Contains」は「何よりも持っている」という意味です。 「同じ」を意味する場合は、== 演算子を使用してください。

答え3

sedで

sed '/;23$/d' infile

3つ以上の列が可能な場合

sed '/\([^;]*;\)\{2\}23\(;\|$\)/d' infile

またはEREを使用してください

sed -E '/([^;]*;){2}23(;|$)/d' infile

関連情報