使用 grep 在两个特定单词/字符之间获取字符串的模式 [英] Pattern to get string between two specific words/characters using grep
本文介绍了使用 grep 在两个特定单词/字符之间获取字符串的模式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我需要从这样的字符串中提取电子邮件地址(我正在制作一个日志解析器):<代码><一些文字>from=someuser@somedomain.com, <一些文本>
I need to extract email address from a string like this (I'm making a log parser):
<some text> from=someuser@somedomain.com, <some text>
与egrep
(或grep -Eo
).所以字符串只需要在 "from="
和 ","
之间被拉出,因为日志的其他部分也包含电子邮件地址,比如 to=
和 等
with egrep
(or grep -Eo
). So the string needs to be pulled out only between "from="
and ","
, because the other parts of log contain email addresses too, like to=
and etc
推荐答案
使用grep -oP
:
s='<some text> from=someuser@somedomain.com, <some text>'
grep -oP '(?<=from=).*?(?=,)' <<< "$s"
someuser@somedomain.com
或者使用K
避免lookbehind
:
grep -oP 'from=K.*?(?=,)' <<< "$s"
someuser@somedomain.com
如果您的 grep
不支持 -P
(PCRE),请使用此 sed:
In case your grep
doesn't support -P
(PCRE) use this sed:
sed 's/.*from=(.*),.*/1/' <<< "$s"
someuser@somedomain.com
这篇关于使用 grep 在两个特定单词/字符之间获取字符串的模式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文