Text-Processing
當兩列字元串不相等時如何提取行
我有一個看起來像這種格式的 CSV 文件:
text1,text2,string1,string2 text3,text3,string3,string2 text4,text5,string1,string2 text6,text6,string6,string7
我想在 column1 和 column2 不相等時提取行。上述範例中的預期結果將是:
text1,text2,string1,string2 text4,text5,string1,string2
當 column1 和 column2 不相等時。我熟悉允許我提取特定列的命令,如下所示以提取第一列:
cat input.csv | cut -d ',' -f1 > output.csv
假設這是一個簡單的 CSV文件,在實際數據的欄位中沒有任何花哨的逗號或換行符嵌入*,*您可以
awk
這樣做:awk -F ',' '$1 != $2' <input.csv
這是一種簡寫方式
awk 'BEGIN { FS = "," } $1 != $2 { print }' <input.csv
如果第一個和第二個欄位(
$1
和$2
)不相同,它將輸入欄位分隔符設置為逗號並列印每一行。等效的 Perl 變體:
perl -F ',' -na -e 'print if $F[0] ne $F[1]' <input.csv
GNU**
sed
**解決方案:sed -E '/^([^,]+,)\1/d' input.csv
輸出:
text1,text2,string1,string2 text4,text5,string1,string2