我的问题再次基于linux shell编程,这一次,我有两个文本文件,每个文件大约有17,000行。
在第一个文件中,我有这种形式的行:
[*] 11004, e01c5dee8efb188af91fb989a1039a12, isabelleann86@yahoo.com
第二个文件的每一行都有表格:
e01c5dee8efb188af91fb989a1039a12:nathan09
现在我想从这两个文件中创建第三个文件,其格式为:
isabelleann86@yahoo.com:nathan09
但请注意,hash e01c5dee8efb188af91fb989a1039a12必须与第一个和第二个文件中的两行对应,而不是与使用email_1和password_3421创建行。
来自文件一的电子邮件和来自文件二的密码,其中行具有相同的哈希值?
我知道可能使用grep / awk组合,但我只是不知道如何形成它。
答案 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