2013-12-16 52 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