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

时间:2017-07-10 15:44:25

标签: bash awk sed comm

我有两个文件,

$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的{​​{1}}字段。如果"file_2.txt"匹配,请从'hash'获取完整的匹配行。

匹配行:(来自"file_2.txt"

file_2.txt

我尝试使用95335df46cfdb345c0214296e0043c00,5,M,N ,但没有得到任何结果。

awk

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

2 个答案:

答案 0 :(得分:2)

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

您错过了指定,使用分隔符

答案 1 :(得分:1)

使用join命令:

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

输出:

95335df46cfdb345c0214296e0043c00,5,M,N
  • -t',' - 输入/输出字段分隔符