我似乎记得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 has nothing to do中的扩展正则表达式,其范围像parens中的管道字符,所以为什么没有这些标志的替换工作( -E , -r )?
答案 0 :(得分:5)
-E
是您的sed版本中-r
的别名,即extended regex support
extended regex
支持,则square brackets
与literal parentheses
匹配,而不是正则表达式分组。