![awk コマンドを使用して、行に同じ値がある場合に CSV 内の複数の列を削除する方法](https://rvso.com/image/168792/awk%20%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%80%81%E8%A1%8C%E3%81%AB%E5%90%8C%E3%81%98%E5%80%A4%E3%81%8C%E3%81%82%E3%82%8B%E5%A0%B4%E5%90%88%E3%81%AB%20CSV%20%E5%86%85%E3%81%AE%E8%A4%87%E6%95%B0%E3%81%AE%E5%88%97%E3%82%92%E5%89%8A%E9%99%A4%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95.png)
このような出力があります
4567,4567
5436,5436
1234,5678
期待される出力:
1234,5678
以下のコマンドを試しましたが、行ではなく列が削除されています
awk -F, 'NF==2{NF-=1}NF<1{sub(/",.*/,"\"")}1' OFS=,
ご協力とご提案ありがとうございます
答え1
これはどうですか
awk -F, '$1 != $2'
これは、最初の 2 つのコンマで区切られたフィールドを比較することによって機能します。明示的なステートメントが提供されていない場合、各awk
ステートメントには暗黙の if があり{ print }
、それがここで使用されます。その結果、2 つのフィールドが一致しない場合にのみ入力行が印刷されます。
答え2
これが私の提案ですsed
:
sed '/^\(.*\),\1$/d' file
出力:
1234,5678