2013-12-16 50 views
0

我在使用awk編程語言的語法上遇到了一些問題。我想:awk語法錯誤

$ awk '{if (NR==FNR) a[$2]; else if !($2 in a) {print $2} }' file1 file2 > file3 

我得到了以下錯誤mesages:

awk: {if (NR==FNR) a[$2]; else if !($2 in a) {print $2} } 

awk:       ^syntax error 

awk: {if (NR==FNR) a[$2]; else if !($2 in a) {print $2} } 

awk:          ^syntax error 

有人可以幫我整理了這一點?

回答

1

您需要添加額外的支架周圍的狀況:

awk '{if (NR==FNR) a[$2]; else if (!($2 in a)) {print $2} }' 

這裏是if語句的AWK完整的語法:

if (CONDITION) THEN-BODY [else ELSE-BODY] 

條件應始終括號

+0

謝謝。這是我需要的答案。 – user1730290

1

編寫腳本的正確方法是:

$ awk 'NR==FNR{a[$2];next}!($2 in a){print $2}' file1 file2 

awk每個代碼塊{code}只有在進行條件爲真時纔會執行。 next語句讀取輸入中的下一行並重新運行該腳本,以有效地跳過其他任何塊。也就是說{a[$2];next}file1執行,因爲這是唯一的一次NR==FNR{print $2}當我們讀file2只執行和$2file1發現

+0

謝謝sudo_o。 – user1730290