如何使用 perl 命令替换具有 { 特殊字符的字符

How to replace a character having { special character using a perl command

提问人:tanuj singla 提问时间:6/29/2023 最后编辑:Håkon Hæglandtanuj singla 更新时间:6/29/2023 访问量:38

问:

我正在使用下面的perl命令&,但是该值没有填充到我的html文件中。

使用的命令:

perl -l -p -i -e "s/BER_IMC_SRE_{10}/$BER_IMC_SRE_10/g" $tmpfile501
perl -l -p -i -e "s/BER_IMC_DB_Lat_SRE_{10}/$BER_IMC_DB_Lat_SRE_10/g" $tmpfile501

执行日志:

  • perl -l -p -i -e 's/BER_IMC_SRE_{10}/10228/g' /data/scripts/reports/20230629125556374622858//24949_rep.html
  • perl -l -p -i -e 's/BER_IMC_DB_Lat_SRE_{10}/9/g' /data/scripts/reports/20230629125556374622858//24949_rep.html

HTML O/P:

enter image description here

我想将变量 BER_IMC_DB_Lat_SRE_{10} 替换为值 9,如执行日志中所示。

  • perl -l -p -i -e 's/BER_IMC_SRE_{10}/10228/g' /data/scripts/reports/20230629125556374622858//24949_rep.html
  • perl -l -p -i -e 's/BER_IMC_DB_Lat_SRE_{10}/9/g' /data/scripts/reports/20230629125556374622858//24949_rep.html
HTML Linux Perl 变量 特殊字符

评论

0赞 Håkon Hægland 6/29/2023
你有没有试图逃避大括号和?前面的是否应该包含在结果中?如果是这样,你也应该逃避它{}$BER

答:

1赞 choroba 6/29/2023 #1

大括号在正则表达式中很特殊。逃避他们:

perl -l -p -i -e "s/BER_IMC_SRE_\{10\}/$BER_IMC_SRE_10/g"

你也可以使用 让 quotemeta 为你转义一切:\Q

perl -l -p -i -e "s/\QBER_IMC_SRE_{10}/$BER_IMC_SRE_10/g"

请注意,如果替换包含 .最好使用 Perl 变量而不是 shell 变量。/

r=$BER_IMC_SRE_10 perl -l -p -i -e 's/\QBER_IMC_SRE_{10}/$ENV{r}/g'