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

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个回答

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

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

这行代码可以实现它的功能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接