所以,是的,我试图将包含电子邮件的file1与发送电子邮件冒号地址的file2相匹配,我该如何继续进行呢?
尝试了awk 'FNR==NR{a[$1]=$0; next}{print a[$1] $0}'
,但是我犯了什么错误
文件1:
email@email.email
email@test.test
test@email.email
file2的:
email@email.email:addressotest
email@test.club:clubbingson
test@email.email:addresso2
输出:
test@email.email:addresso2
email@email.email:addressotest
答案 0 :(得分:1)
关注awk
可能对您有帮助。
awk 'FNR==NR{a[$0];next} ($1 in a)' FILE_1 FS=":" FILE_2
答案 1 :(得分:1)
$ join -t: <(sort file1) <(sort file2)
email@email.email:addressotest
test@email.email:addresso2
预先输入文件
h=$(echo "$g" | sed 's/.*\(abc[[:digit:]]\).*/\1/g')
if [ ! "$h" = "$g" ]; then
echo "1"
else
echo "2"
fi
答案 2 :(得分:0)
当您只需使用以下awk
命令时,为什么选择join
解决方案:
join -t':' file 1 file2
其中join作为名称表示只是一个文件加入命令,你选择了字段分隔符,通常输入列和输出显示(这里没有必要)
测试:
$more file{1,2}
::::::::::::::
file1
::::::::::::::
email@email.email
email@test.test
test@email.email
::::::::::::::
file2
::::::::::::::
email@email.email:addressotest
email@test.club:clubbingson
test@email.email:addresso2
$join -t':' file1 file2
email@email.email:addressotest
test@email.email:addresso2
如果您还需要对输出进行排序,请将命令更改为:
join -t':' file 1 file2 | sort -t":" -k1
或
join -t':' file 1 file2 | sort -t":" -k2
取决于您要排序的列(最终添加-r
选项以按相反顺序排序。
join -t':' file 1 file2 | sort -t":" -k1 -r
或
join -t':' file 1 file2 | sort -t":" -k2 -r