gpt4 book ai didi

regex - 从一个文件中查找另一个文件中的电子邮件

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:08:07 26 4
gpt4 key购买 nike

我想从一个这样列出的文件中查找电子邮件:

john@blogs.com
joe@blogs.com
james@blogs.com

在另一个文件中这样列出:

john@blogs.com:+123456789
jack@blogs.com:+123456789
jeff@blogs.com:+123456789
james@blogs.com:+123456789

并输出第二个文件中与第一个文件匹配的行,同时请记住,它需要从头到尾匹配整个电子邮件,以免意外匹配 robertjohn@blogs.com。

期望的输出:

john@blogs.com:+123456789
james@blogs.com:+123456789

谢谢!

最佳答案

使用 grep,使用 -f 从输入文件中获取换行符分隔的模式(此处为字符串,-F),并匹配另一个文件:

grep -Ff email.txt file.txt 

使用 awk,保存一个包含电子邮件的数组作为索引,并检查第二个文件中每条记录的第一个字段是否为索引:

awk -F: 'NR==FNR{a[$0]=1; next} a[$1]' email.txt file.txt

示例:

% cat email.txt 
john@blogs.com
joe@blogs.com
james@blogs.com

% cat file.txt
john@blogs.com:+123456789
jack@blogs.com:+123456789
jeff@blogs.com:+123456789
james@blogs.com:+123456789

% grep -Ff email.txt file.txt
john@blogs.com:+123456789
james@blogs.com:+123456789


% cat email.txt
john@blogs.com
joe@blogs.com
james@blogs.com

% cat file.txt
john@blogs.com:+123456789
jack@blogs.com:+123456789
jeff@blogs.com:+123456789
james@blogs.com:+123456789

% awk -F: 'NR==FNR{a[$0]=1; next} a[$1]' email.txt file.txt
john@blogs.com:+123456789
james@blogs.com:+123456789

关于regex - 从一个文件中查找另一个文件中的电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42545825/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com