我正在尝试使用PCRE正则表达式并在SED中使用它,但是我遇到了一些问题。请注意,这个问题代表了一个更大的问题(如何将PCRE regex转换为可与SED一起使用),因此,该问题不仅涉及以下示例,还涉及如何在整个SED regex中使用PCRE regex。
本示例从一行中提取一个电子邮件地址,并将其替换为“ [emailaddr]”。
echo "My email is [email protected]" | sed -e 's/[a-zA-Z0-9]+[@][a-zA-Z0-9]+[\.][A-Za-z]{2,4}/[emailaddr]/g'
我尝试了以下替换正则表达式:
([a-zA-Z0-9]+[@][a-zA-Z0-9]+[\.][A-Za-z]{2,4})
[a-zA-Z0-9]+[@][a-zA-Z0-9]+[\.][A-Za-z]{2,4}
([a-zA-Z0-9]+[@][a-zA-Z0-9]+[.][A-Za-z]{2,4})
[a-zA-Z0-9]+[@][a-zA-Z0-9]+[.][A-Za-z]{2,4}
我尝试将sed的定界从s / find / replace / g更改为s | find | replace | g(如此处概述)(堆栈溢出:pcre regex改为sed regex)。
我仍然无法弄清楚如何在SED中使用PCRE regex,或如何将PCRE regex转换为SED。任何帮助都会很棒。
使用该-r
标志可以使用扩展的正则表达式。(-E
而不是-r
在OS X上)
echo "My email is [email protected]" | sed -r 's/[a-zA-Z0-9]+@[a-zA-Z0-9]+\.[A-Za-z]{2,4}/[emailaddr]/g'
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句