sed 扩展正则表达式的替代方案

Har*_*ikk 2 regex shell sed

我需要运行正则表达式来匹配字符串的一部分。在 OS XI 上会这样做:

echo "$string" | sed -E 's/blah(.*)blah/\1/g'
Run Code Online (Sandbox Code Playgroud)

但是,这种使用sed与其他平台不兼容,其中许多平台会使用 调用相同的命令sed -r

所以我正在寻找的是一种检测要使用哪个选项的好方法,或者是一种广泛可用(且兼容)的替代方案,sed我可以尝试做同样的事情(使用模式检索字符串的一部分)。

anu*_*ava 6

还有 awk、perl、tr 甚至纯 bash 等替代方案。这取决于你想做什么。

但是,对于您的情况,您实际上并不需要-Esed 的特殊正则表达式标志。你可以做:

sed 's/blah\(.*\)blah/\1/g'
Run Code Online (Sandbox Code Playgroud)

使其与其他平台上的 sed 兼容。