鍍金池/ 問(wèn)答/Linux  HTML/ 請(qǐng)問(wèn) Shell 如何進(jìn)行正則替換?

請(qǐng)問(wèn) Shell 如何進(jìn)行正則替換?

比如我由一個(gè)字符串變量,內(nèi)容為:

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

我想實(shí)現(xiàn)正則替換,將字符串生成為:

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

或者

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

請(qǐng)問(wèn)如何實(shí)現(xiàn),我試了 sed 等,但是 Shell 能力有限,難以達(dá)到效果。

注意:我是想達(dá)到一種模板引擎替換的效果。

回答
編輯回答
耍太極

因?yàn)閱?wèn)題已經(jīng)更正,答案也更新一下:
借助grep和sed可以解決你的問(wèn)題

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

以上,返回 AAA=${AAA}, 同樣,上述語(yǔ)句也適用于<%=[ "\${Alias}" == "" ]=%>的解析。

2017年6月2日 09:22