Bash 在第三个文件中连接两个文件中的特定文本部分?

Bash 在第三个文件中连接两个文件中的特定文本部分?,bash,shell,join,awk,grep,Bash,Shell,Join,Awk,Grep,我的问题再次基于linux shell编程,这次,我有两个文本文件,每个文件大约有17000行 在第一个文件中,我有以下行: [*] 11004, e01c5dee8efb188af91fb989a1039a12, isabelleann86@yahoo.com 第二个文件的每一行都有一个表单: e01c5dee8efb188af91fb989a1039a12:nathan09 现在我想从这两个文件中创建第三个文件,其形式为: isabelleann86@yahoo.com:nathan09

我的问题再次基于linux shell编程,这次,我有两个文本文件,每个文件大约有17000行

在第一个文件中,我有以下行:

[*] 11004, e01c5dee8efb188af91fb989a1039a12, isabelleann86@yahoo.com
第二个文件的每一行都有一个表单:

e01c5dee8efb188af91fb989a1039a12:nathan09
现在我想从这两个文件中创建第三个文件,其形式为:

isabelleann86@yahoo.com:nathan09
但请注意,散列e01c5dee8efb188af91fb989a1039a12必须对应于第一个和第二个文件中的两行,不像创建带有电子邮件和密码的行一样

来自文件1的电子邮件和来自文件2的密码,其中行具有相同的哈希值


我知道使用grep/awk组合可能是可行的,但我只是不知道如何形成它。

这里有一种方法使用带有多个分隔符的
awk

awk -F "[ ,:]+" 'FNR==NR { a[$3]=$4; next } $1 in a { print a[$1], $2 }' OFS=":" file1 file2 > file3
结果;
文件3的内容

isabelleann86@yahoo.com:nathan09
使用awk

awk 'NR==FNR{a[$(NF-1)]=$NF;next}   
    $1"," in a {print a[$1","] FS $NF}' file1 FS=:  file2

我只是告诉我,我知道可以通过grep和awk来完成,但仍然不知道如何格式化命令,是的,一次只处理一行也是个糟糕的主意,因为我在每个文件中有大约17000行。