当使用awk连接两个文件时,可以使用awk的内置函数NR和FNR来打印不匹配列的值。
在awk中,NR表示当前处理的行数,FNR表示当前文件中的行数。当awk处理多个文件时,FNR会在每个文件中重新计数,而NR会一直累加。
假设我们有两个文件file1.txt和file2.txt,它们的内容如下:
file1.txt:
1 apple
2 banana
3 orange
4 mango
file2.txt:
1 red
2 yellow
3 orange
5 green
我们想要连接这两个文件,并打印file1.txt中不匹配的行。可以使用以下命令:
awk 'NR==FNR{a[$1]=$0; next} !($1 in a){print}' file1.txt file2.txt
解释:
NR==FNR{a[$1]=$0; next}
:当处理第一个文件file1.txt时,将file1.txt的第一列作为键,整行作为值存储在数组a中。!($1 in a){print}
:当处理第二个文件file2.txt时,如果file2.txt的第一列不在数组a中,则打印该行。运行以上命令,输出结果为:
5 green
这是因为file2.txt中的第一列5在file1.txt中没有匹配。
推荐的腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云