次の内容を含む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