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

标签 bash awk

我有两个文件:

文件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 但它不起作用。我想搜索需要递归,但我不确定当涉及两个文件时如何进行搜索。

如有任何帮助,我们将不胜感激。

谢谢

最佳答案

使用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

关于bash - 将一个文件的每一行与另一个文件的每一行进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26160261/

相关文章:

git - "bash: fork: retry: No child processes "运行 docker 快速启动终端或/git bash shell 时

linux - bash 中的 dir 路径谜题?

sed - libSVM 自动化标签脚本

r - 将多个大型 csv 文件合并(rbind)为一个具有不同列顺序的文件

shell - 将分隔字段转换为具有名称和值的行

regex - 如何在 AWK 中使用正则表达式作为字段分隔符?

linux - bash 中的 echo 表达式

html - 在 PERL 中使用 SSH 运行 bash 命令

python - 在同一个 Fabric 执行中使用 2 次 cd() 调用

shell - 在 awk 脚本中使用搜索模式中的变量