如何使用Perl命令替换包含特殊字符的字符。

huangapple go评论72阅读模式
英文:

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

问题

我正在使用以下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输出:

如何使用Perl命令替换包含特殊字符的字符。

我想要将变量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

英文:

I am using below perl command & but the value is not populating into my html file w.r.t. to it .

commands used :

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

execution logs :

  • 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 :

如何使用Perl命令替换包含特殊字符的字符。

I want to replace the variable BER_IMC_DB_Lat_SRE_{10} with value 9 as shown in the execution logs .

  • 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

答案1

得分: 1

花括号在正则表达式中是特殊字符。需要转义它们:

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

您还可以使用\Q来让quotemeta为您转义所有字符:

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'

英文:

Curly brackets are special in regexes. Escape them:

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

You can also use the \Q to let quotemeta escape everything for you:

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

Note that it can still fail if the replacement contains a /. It's better to use Perl variables rather than shell variables.

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

huangapple
  • 本文由 发表于 2023年6月29日 19:16:04
  • 转载请务必保留本文链接:https://go.coder-hub.com/76580520.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定