从第三个文件中加入两个文件的特定文本部分?

时间:2013-12-25 10:32:38

标签: bash shell join awk grep

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

在第一个文件中,我有这种形式的行:

[*] 11004, e01c5dee8efb188af91fb989a1039a12, isabelleann86@yahoo.com

第二个文件的每一行都有表格:

e01c5dee8efb188af91fb989a1039a12:nathan09

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

isabelleann86@yahoo.com:nathan09

但请注意,hash e01c5dee8efb188af91fb989a1039a12必须与第一个和第二个文件中的两行对应,而不是与使用email_1和password_3421创建行。

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

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

2 个答案:

答案 0 :(得分:3)

以下是使用awk和多个分隔符的一种方式:

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

结果;内容file3

isabelleann86@yahoo.com:nathan09

答案 1 :(得分:0)

使用awk

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