检查两个文件中的匹配字段
鉴于这两个 CSV 文件:
$ cat file1
1,line1
2,line2
3,line3
4,line4
$ cat file2
1,line3
2,line4
3,line5
4,line6
要在 file2 中打印这些行,其第二列也出现在第一个文件中,我们可以说:
$ awk -F, 'FNR==NR {lines[$2]; next} $2 in lines' file1 file2
1,line3
2,line4
这里,lines[] 包含一个数组,当使用每行第二个字段的内容读取 file1 时,该数组将被填充。
然后,条件 $2 in lines 为 file2 中的每一行检查数组中是否存在第二个字段。如果是,则条件为 True 并且 awk 执行其默认操作,包括打印整行。
如果只需要打印一个字段,那么这可能是表达式:
$ awk -F, 'FNR==NR {lines[$2]; next} $2 in lines {print $1}' file1 file2
1
2