我需要从像这样的字符串中提取电子邮件地址(我正在创建一个日志解析器):
与egrep
(或grep -Eo
).所以字符串只需要在"from="
和之间拉出","
,因为日志的其他部分也包含电子邮件地址,比如to=
和etc
尝试 awk
echo '<text> from=someuser@somedomain.com, <text>' | awk -F[=,] '{print $2}'
$2
根据其位置,这里可以是不同的数字.
使用grep -oP
:
s='<some text> from=someuser@somedomain.com, <some text>' grep -oP '(?<=from=).*?(?=,)' <<< "$s" someuser@somedomain.com
或者lookbehind
通过使用避免\K
:
grep -oP 'from=\K.*?(?=,)' <<< "$s" someuser@somedomain.com
万一你grep
不支持-P
(PCRE)使用这个sed:
sed 's/.*from=\(.*\),.*/\1/' <<< "$s" someuser@somedomain.com