当两个文件在脚本中进行比较并互换时,AWK 的工作原理

当两个文件在脚本中进行比较并互换时,AWK 的工作原理

在下面的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行。file1file2

对于给定的数据,代码相当于

awk 'FNR==NR { a[$0]++; next } !($0 in a)'

其中a是一个数组,该数组已使用来自第一的文件。最后的条件是“如果在第一个文件中找不到该行,则打印该行(从第二个文件中)”。

相关内容