在下面的awk
脚本中,当交换文件名时,我可以看到 2 个不同的结果。我很想知道 awk 如何将输出写入控制台,在每种情况下都有不同的结果
文件一:
abc bca cdb
abc few bre
bbc bba cdb
cbc frw bte
文件2:
abc bca cdb
gbc fiw bpe
bbc bca cdb
cbc frw bte
脚本 :
awk 'FNR==NR {a[$1$2$3]++;next};!(($1$2$3) in a)' **file1 file2**
输出 :
gbc fiw bpe
bbc bca cdb
脚本:
awk 'FNR==NR {a[$1$2$3]++;next};!(($1$2$3) in a)' **file2 file1**
输出:
abc few bre
bbc bba cdb
答案1
file2
第一个命令为您提供在中 找不到的行,而第二个命令为您提供在 中 找不到的file1
行。file1
file2
对于给定的数据,代码相当于
awk 'FNR==NR { a[$0]++; next } !($0 in a)'
其中a
是一个数组,该数组已使用来自第一的文件。最后的条件是“如果在第一个文件中找不到该行,则打印该行(从第二个文件中)”。