【发布时间】:2018-08-30 07:48:02
【问题描述】:
Ubuntu 16.04
GNU bash,版本 4.4.0
我需要将电子邮件提取到以单词 abuse 开头的文件中。 这是一个包含 IP 地址的 whois 信息的文件,其中包含电子邮件 abuse@web.ad.jp。
% [whois.apnic.net]
% Whois data copyright terms http://www.apnic.net/db/dbcopyright.html
% Information related to '121.92.0.0 - 121.93.255.255'
% Abuse contact for '121.92.0.0 - 121.93.255.255' is 'hostmaster@nic.ad.jp'
inetnum: 121.92.0.0 - 121.93.255.255
netname: InfoWeb
descr: FUJITSU LIMITED
descr: 17-25, SHINKAMATA 1-CHOME, OTA-KU,
descr: TOKYO 144-8588, JAPAN
country: JP
admin-c: JNIC1-AP
tech-c: JNIC1-AP
status: ALLOCATED PORTABLE
remarks: Email address for spam or abuse complaints abuse@web.ad.jp
mnt-by: MAINT-JPNIC
mnt-irt: IRT-JPNIC-JP
mnt-lower: MAINT-JPNIC
last-modified: 2015-12-01T22:23:26Z
source: APNIC
irt: IRT-JPNIC-JP
address: Urbannet-Kanda Bldg 4F, 3-6-2 Uchi-Kanda
address: Chiyoda-ku, Tokyo 101-0047, Japan
e-mail: hostmaster@nic.ad.jp
abuse-mailbox: hostmaster@nic.ad.jp
admin-c: JNIC1-AP
tech-c: JNIC1-AP
auth: # Filtered
mnt-by: MAINT-JPNIC
last-modified: 2017-10-18T10:21:54Z
source: APNIC
我不关心哪个命令从文件中提取了 abuse@web.ad.jp 的电子邮件地址,我只关心它是否有效。
过去我使用 grep 来查找文件中的所有电子邮件地址,例如 ...
grep -o '[[:alnum:]+\.\_\-]*@[[:alnum:]+\.\_\-]*' "$1" | sort | uniq -i
但绝不是一封以单词开头的电子邮件,所以我预期的命令输出会产生我 abuse@web.ad.jp。
【问题讨论】:
-
@Curious Sam,请在您的帖子中添加您必须解决问题的努力,然后让我们知道。
-
grep -o abuse@.* <filename> -
@RavinderSingh13 我通常这样做,我正在编辑我的 OP 以包含我过去用来查找所有电子邮件地址的 grep 命令,然后错过了回家并决定告诉我她的工作之夜多么可怕。它发生了,我在那里道歉。
-
@devd 你的回复正好给了我我需要的东西,而且效果很好,但是这段时间是什么时候?
-
这里你甚至不需要
[a-z0-9]*,只要grep -m 1 -ioE 'abuse@[^[:blank:]]+' file就够了。