即使没有打印,这如何在 awk 中工作?

mun*_*ish 1 awk

bash-3.00# cat > b1.txt
AAA,Apples,123
BBB,Bananas,124
CCC,Carrot,125
bash-3.00# cat > b2.txt
Store1|AAA|123|11
Store2|BBB|124|23
Store3|CCC|125|57
Store4|DDD|126|38
bash-3.00# awk -F"[,|]" 'NR==FNR{a[$1]++;next} !a[$2]' b1.txt b2.txt
Store4|DDD|126|38
Run Code Online (Sandbox Code Playgroud)

NR==FNR第一个文件的返回 truea[$1]增加时。next回到脚本的开头。但是!a[$2]在这里做什么?它如何在没有print命令的情况下打印?

jw0*_*013 7

POSIXawk规范

awk 程序由以下形式的对组成:

pattern { action }
Run Code Online (Sandbox Code Playgroud)

可以省略模式或操作(包括括号括起来的字符)。... [A] 遗漏的行动应等同于:

{ print }
Run Code Online (Sandbox Code Playgroud)

在您的情况下,!a[$2]pattern,并且缺少操作。