请问 Shell 如何进行正则替换?

比如我由一个字符串变量,内容为:

AAA=<?=\${AAA}=?>
BBB=<?=\${BBB}=?>
<%=[ "\${Alias}" == "" ]=%>
CCC=\${CCC}

我想实现正则替换,将字符串生成为:

AAA=<?=${AAA}=?>
BBB=<?=${BBB}=?>
<%= [ "${Alias}" == "" ] =%>
CCC=\${CCC}

或者

AAA=${AAA}
BBB=${BBB}
[ "${Alias}" == "" ]
CCC=\${CCC}

请问如何实现,我试了 sed 等,但是 Shell 能力有限,难以达到效果。

注意:我是想达到一种模板引擎替换的效果。

阅读 3.5k
1 个回答

因为问题已经更正,答案也更新一下:
借助grep和sed可以解决你的问题

echo 'AAA=<?=\${AAA}=?>' | grep -E '<[?%]=.*=[?%]>' | sed 's/\\\$/$/g' | sed 's/<[?%]=//g' | sed 's/=[?%]>//g'

以上,返回 AAA=${AAA}, 同样,上述语句也适用于<%=[ "\${Alias}" == "" ]=%>的解析。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题