检查两个文件中的匹配字段
鉴于这两个 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