1

我似乎记得 sed 的-E标志以启用扩展正则表达式,然后查看今天的手册页,我发现它不存在,但是

echo development.properties | sed -E 's/(development.|staging.|qa.|production.)//'

特性

echo development.properties | sed 's/(development.|staging.|qa.|production.)//'

development.properties

echo development.properties | sed -r 's/(development.|staging.|qa.|production.)//'

特性

所以在我看来-E正在做某事,而且我敢说它现在是-r的别名,至少我认为-E是用于(扩展正则表达式)的。它在某个时候改变了吗?看起来它可能仍然支持向后兼容性,或者没有?

此外,听起来 sed 中的扩展正则表达式与括号内的管道字符之类的范围无关,那么为什么没有这些标志(-E-r)中的任何一个都不能进行替换?

4

1 回答 1

5
  1. -E-r您的 sed 版本中的别名,即extended regex support
  2. 如果没有extended regex支持,square brackets则匹配为literal parentheses不用于正则表达式分组。
于 2013-10-17T19:45:54.633 回答