2014-10-02 45 views
3

的每一行我有两个文件:比较一个文件中的每一行与另一个文件

文件1

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

文件2

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中的匹配行中。我试过join但它不起作用。我猜搜索需要递归,但当涉及两个文件时,我不知道如何去做。

任何帮助将不胜感激。

感谢

回答

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 
+0

感谢它很好。 – rohit 2014-10-02 15:37:00

+0

不客气,很高兴它解决了。 – anubhava 2014-10-02 15:37:42

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

这一行做的。

相关问题