我在使用awk编程语言时遇到了一些语法问题。我试过了:
$ awk '{if (NR==FNR) a[$2]; else if !($2 in a ) {print $2} }' file1 file2 > file3
我收到了以下错误消息:
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
有人可以帮我解决这个问题吗?
答案 0 :(得分:1)
您需要在条件周围添加额外的括号:
awk '{if (NR==FNR) a[$2]; else if (!($2 in a )) {print $2} }'
以下是awk中If语句的完整语法:
if (CONDITION) THEN-BODY [else ELSE-BODY]
条件应始终用括号括起来
答案 1 :(得分: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
和{{{{}}时执行的唯一时间在$2
中找到了1}}。