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命令的情况下打印?
awk 程序由以下形式的对组成:
Run Code Online (Sandbox Code Playgroud)pattern { action }可以省略模式或操作(包括括号括起来的字符)。... [A] 遗漏的行动应等同于:
Run Code Online (Sandbox Code Playgroud){ print }
在您的情况下,!a[$2]是pattern,并且缺少操作。