次の形式の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