将一个文件的每一行与另一个文件的每一行进行比较

时间:2014-10-02 11:55:44

标签: bash awk

我有两个文件:

文件1

cat file1
A,1
B,2
C,2
D,3

file2的

cat file2
A
A
A
B
B
C
C
D

期望的输出

cat output
A,A,1 
A,A,1
A,A,1
B,B,2
B,B,2
C,C,2
C,C,2
D,D,3

正如您所看到的,file1的每一行应与file2的每一行匹配,如果匹配,file1中的行应添加到file2中的匹配行{1}}。我试过了join但它不起作用。我想搜索需要递归,但我不知道在涉及两个文件时如何做到这一点。

非常感谢任何帮助。

由于

2 个答案:

答案 0 :(得分:2)

使用awk

awk -F, -v OFS=, 'FNR==NR {a[$1]=$0;next} $1 in a{print $1, a[$1]}' file1 file2
A,A,1
A,A,1
A,A,1
B,B,2
B,B,2
C,C,2
C,C,2
D,D,3

答案 1 :(得分:2)

join -t',' -o'1.1,2.1,2.2' file2 file1

这条线就可以了。