庆典egrep的 - 模式两种特定的单词/字符之间得到的字符串 [英] bash egrep - pattern to get string between two specific words/characters

查看:170
本文介绍了庆典egrep的 - 模式两种特定的单词/字符之间得到的字符串的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要从这样的字符串(我在写日志分析器)提取电子邮件地址:
<一些文本> 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 )。因此字符串必须从=之间只有拉出,因为其他地区日志包含电子邮件地址太像来=

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

否则避免后向使用 \\氏/ code>:

OR else avoid lookbehind by using \K:

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

这篇关于庆典egrep的 - 模式两种特定的单词/字符之间得到的字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆