set release=//packages/thirdparty/release/main.txt
perl -pe"s!(//packages/thirdparty/release/main.txt *)#\d+!$1#15!;" testlog.txt
如何使用%release%
(环境变量release
)代替//packages/thirdparty/release/main.txt
?
我从
收到语法错误 perl -pe"s!(%release%! *)#\d+!$1#15!;" testlog.txt
原始问题 Search and replace a string using Windows shell or Perl script
答案 0 :(得分:2)
您可以使用%ENV
哈希来访问环境变量,例如
perl -pe"s/(\Q$ENV{RELEASE}\E *)#\d+/$1#15/" testlog.txt
您还可以使用正面的后视来避免必须替换初始字符串
perl -pe"s/(?<=\Q$ENV{RELEASE}\E *)#\d+/#15/" testlog.txt
或\K
如果您运行的是Perl 5的14或更高版本
perl -pe"s/\Q$ENV{RELEASE}\E *\K#\d+/#15/" testlog.txt