使用正则表达式替换字符串时出错

时间:2015-09-11 19:32:19

标签: regex perl shell replace

我有多个jsp文件,我想在其中做这样的事情以避免XSS。基本上使用JSTL来逃避“价值”。

//change following line to use c:out
<input  type="hidden" id="crudProperty1" name="crudProperty1" value="${crud.property1}"></input> 

<input  type="hidden" id="crudProperty1" name="crudProperty1"  value="<c:out value="${crud.property1}"/>"></input>

这是我尝试从终端使用的脚本,对文件夹中的一个文件进行这些更改。

find . -type f -name "*.jsp" | xargs perl -i -p -e 's|" value=("\${.*}"?)|" value="<c:out value=\1/>"|'

这主要是寻找任何.jsp文件,然后循环输出abd替换上面提到的文本。我不太确定出了什么问题,但我没有看到文件有任何变化。任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:2)

您不需要使用perl和xargs,只能使用sed执行此任务:

find . -type f -name "*.jsp" -exec sed -i 's#\(value="\)\(\${[^}]*}\)"#\1<c:out \1\2/>"#g' {} \;