比较两个文件并从第二个文件中获得匹配的行结果

Compare two files and get the matching line result from 2nd file

我有两个文件,

$cat file_1.txt
95335df46cfdb345c0214296e0043c00,NA
a0af947a85e6895dab70eaec136cfed2,NA

$cat file_2.txt
77f673137c17b4b0405d13060e9715a3,5,X,Y
874d51610c15975c82c081aba0b096c3,5,A,M
95335df46cfdb345c0214296e0043c00,5,M,N

我正在将 "file_1.txt" 的 first 字段与 first 字段与 "file_2.txt" 进行比较。如果有 'hash' 任何匹配项,则从 "file_2.txt" 中获取完整的匹配行。

匹配行:(来自 file_2.txt

95335df46cfdb345c0214296e0043c00,5,M,N

我尝试使用 awk,但没有得到任何结果。

$ awk 'NR==FNR{a[];next} () in a' file_1.txt file_2.txt

我在这里有什么错误吗?有什么建议吗?

$ awk -F, 'NR==FNR{a[];next}  in a' file_1.txt file_2.txt
95335df46cfdb345c0214296e0043c00,5,M,N

您没有指定 , 是要使用的分隔符

使用join命令:

join -t',' -o2.1,2.2,2.3,2.4 <(sort file_1.txt) <(sort file_2.txt)

输出:

95335df46cfdb345c0214296e0043c00,5,M,N

  • -t',' - input/output 字段分隔符