2014-03-25 33 views
1

我有一個這樣的文件:awk的if語句檢查多個陣列

1 1 9 
2 2 4 
3 2 5 
4 2 4 

我想AWK打印基於第二和第三場唯一的記錄。這兩個字段必須是唯一的才能打印。

理想的輸出應該是這樣的:

1 1 9 
2 2 4 
3 2 5 

所以記錄4,因爲它是相同的記錄2,被排除在外。

這是我的嘗試:

cat file | awk ' !($2 in array) && !($3 in barry) { array[$2]; barry[$3]; print}' 

運行此命令的結果:

1 1 9 
2 2 4 

所以它不添加記錄3,因爲它的第二個字段相同,記錄2的。

我將如何去編碼,所以awk檢查兩個值?

回答

3

這應該這樣做:

awk '!a[$2,$3]++' file 
1 1 9 
2 2 4 
3 2 5 
2

,您可根據指數與2點的值,並檢查它:

awk 'SEEN[ $2 " " $3 ] != 1 { print ; SEEN[ $2 " " $3 ] = 1 }' file