2つの文字列列が等しくないときに行を抽出する方法

2つの文字列列が等しくないときに行を抽出する方法

次の形式のCSVファイルがあります。

text1,text2,string1,string2
text3,text3,string3,string2
text4,text5,string1,string2
text6,text6,string6,string7

列1と列2が等しくないときに行を抽出したいと思います。上記の例で予想される結果は次のとおりです。

text1,text2,string1,string2
text4,text5,string1,string2

列1と列2が等しくない場合。最初の列を抽出するために、以下のように特定の列を抽出できるコマンドに精通しています。

cat input.csv | cut -d ',' -f1 > output.csv

答え1

これが次のとおりです。シンプルなCSVクールなカンマや改行挿入のないファイル以内にawk実際のデータを含むフィールドには、次の方法を使用できます。

awk -F ',' '$1 != $2' <input.csv

これは短縮された方法です。

awk 'BEGIN { FS = "," } $1 != $2 { print }' <input.csv

$1最初と2番目のフィールド(および$2)が同じでない場合は、入力フィールドの区切り文字をコンマに設定し、各行を印刷します。

等しいPerlの変形:

perl -F ',' -na -e 'print if $F[0] ne $F[1]' <input.csv

答え2

牛に似た一種の栄養sed解決策:

sed -E '/^([^,]+,)\1/d' input.csv

出力:

text1,text2,string1,string2
text4,text5,string1,string2

答え3

$ awk -F "," '{if ($1 != $2)print $0}' filename
text1,text2,string1,string2
text4,text5,string1,string2

関連情報