我需要运行正则表达式来匹配字符串的一部分。在 OS XI 上会这样做:
echo "$string" | sed -E 's/blah(.*)blah/\1/g'
Run Code Online (Sandbox Code Playgroud)
但是,这种使用sed与其他平台不兼容,其中许多平台会使用 调用相同的命令sed -r。
所以我正在寻找的是一种检测要使用哪个选项的好方法,或者是一种广泛可用(且兼容)的替代方案,sed我可以尝试做同样的事情(使用模式检索字符串的一部分)。
还有 awk、perl、tr 甚至纯 bash 等替代方案。这取决于你想做什么。
但是,对于您的情况,您实际上并不需要-Esed 的特殊正则表达式标志。你可以做:
sed 's/blah\(.*\)blah/\1/g'
Run Code Online (Sandbox Code Playgroud)
使其与其他平台上的 sed 兼容。