2017-10-18 129 views
0

我試圖找到基於多列的唯一行,但我的代碼似乎不工作。或者至少它設法刪除幾乎所有重複。Unix Shell基於多列查找唯一行

1 A 
2 B 
3 C 
1 A 
2 A 
3 B 
2 A 
3 C 
1 C 
1 A 
2 A 
3 B 

這是我試過的代碼

sort -k1 -k2 TEST.txt | awk -F"\t" '!seen[$1, $2]++' 

預期輸出:

1 A 
1 C 
2 A 
2 B 
3 B 
3 C 

但輸出我得到:

1 A 
1 C 
2 A 
2 B 
3 B 
3 B 
3 C 

我仍然有3 B重複在我的輸出中。誰能幫忙?我的代碼有問題嗎?

回答

0

您可以使用sort -u進行排序,並獲得獨特的結果:

sort -u file 

1 A 
1 C 
2 A 
2 B 
3 B 
3 C 

使用awk你可以這樣做:

awk '!seen[$1,$2]++' file | sort 
+0

檢查輸入文件,'貓-A file'命令 – anubhava

+0

我最後「3 B」的數據與其他數據不同。它只是'3^IB',而其餘的則有'^ M $'作爲後面。介意解釋? – user8742634

+0

用'cat -A file'命令檢查你的輸入文件並將其輸出。 – anubhava