检查两个文件中的匹配字段

鉴于这两个 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 linesfile2 中的每一行检查数组中是否存在第二个字段。如果是,则条件为 True 并且 awk 执行其默认操作,包括打印整行。

如果只需要打印一个字段,那么这可能是表达式:

$ awk -F, 'FNR==NR {lines[$2]; next} $2 in lines {print $1}' file1 file2
1
2