我正在尝试用现有文件中包含$
(美元)符号的新字符串替换字符串。
我在代码中使用了(regex)下面的行,但是无法获得预期的结果。请提出解决方案。
system("perl -pi -e \"s/length\\s+.*/length [index $pkt_len]/g if /^\\s*set_value\\s+length/\" $filename")
查找解决方案的方法是在调试过程中,应打印出系统调用的行,并在外壳中按预期方式“手动”对其进行测试。
我的猜测是
system("perl -pi -e 's/length\\s+.*/length [index \\\$pkt_len]/g if /^\\s*set_value\\s+length/' $filename")
是解决方案。
您需要7个反斜杠(!):
system("echo a | perl -pe \"s/a/\\\\\\\$foo/\"");
输出:
$foo
"echo a | perl -pe \"s/a/\\\\\\\$foo/\""
由perl
解释,它将字符串简化为echo a | perl -pe "s/a/\\\$foo/"
sh
解析为:echo a | perl -pe s/a/\$foo/
perl
解析以提供输出$foo
。