我在 Linux 机器上有两个 CSV 文件,包含数据如下:
文件A
Sunil,21,write a line,2312,12-03-2022
Ashok,22,write a para,2312,12-03-2022
Sam,23,create file using,2312,12-03-2022
文件B
21,write a line,Writer
21,write a script,Writer
23,create file using,Coder
25,create class,Coder
22,write a para,Poet
22,write a file,Writer
现在,应将 FileA 的第 2 列和第 3 列(例如 21,写一行)与 FileB 进行比较,如果匹配,则打印 FileB 的第三列:
输出:
Writer
Poet
Coder
答案1
对于您想要的,并假设您的数据是所提供的,那么您可以按如下方式实现:
awk -F, 'NR==FNR{array[$2,$3]; next} ($1,$2) in array { print $NF}' filea fileb
基本上我们在这里所做的就是,将第 2 列和第 3 列存储在array
停止处理当前记录中(我们使用next
)。 then is $1
and $2
of fileb in array
if so print $NF
where$NF
引用记录的最后一列。
NR
和FNR
是 awk 中的内置变量。 NR是指到目前为止的记录总数,而FNR是指当前文件中的记录数。