我想處理一個 CSV 輸入檔案,如下所示:
a;b
b;c
b;a
c;d
x;y
d;c
并洗掉所定義的規則都重復行:a;b和b;a被認為是重復的,因此應被洗掉,同樣的規則也適用于c;d和d;c他們768,16被洗掉。
我試圖處理檔案兩次并使用條件NR==FNR來確定它是哪個通過(第一次或第二次),但我無法弄清楚如何在我上面定義的重復規則上實作測驗。
請幫我
uj5u.com熱心網友回復:
$ awk -F';' '{ks[$0]; a[$2 FS $1] } END{for(k in ks) if(!a[k]) print k}' file
x;y
b;c
uj5u.com熱心網友回復:
請您嘗試以下操作:
awk -F';' '
NR==FNR { # 1st pass
if (seen[$1$2] || seen[$2$1] ) { # if "ab" or "ba" already exists
dupe[$1";"$2] ; dupe[$2";"$1] # then mark "a;b" and "b;a" as duplicates
}
next
}
! dupe[$0] # print unless duplicates
' file file
輸出:
b;c
x;y
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/359266.html
