正则表达式 – 如何使用Perl替换运算符禁用变量插值?
发布时间:2020-12-14 02:29:56 所属栏目:百科 来源:网络整理
导读:我正在尝试替换VMS上的文本文件中的特定行.通常,这是一个简单的Perl单线程.但是当替换方是包含VMS路径的符号时,我遇到了问题.这是文件和我尝试的内容: file1.txt的内容: foobarbazquux 尝试替换第3行: $mysub = "disk$data1:[path.to]file.txt"$perl -pe
我正在尝试替换VMS上的文本文件中的特定行.通常,这是一个简单的Perl单线程.但是当替换方是包含VMS路径的符号时,我遇到了问题.这是文件和我尝试的内容:
file1.txt的内容: foo bar baz quux 尝试替换第3行: $mysub = "disk$data1:[path.to]file.txt" $perl -pe "s/baz/''mysub'/" file1.txt 产生以下输出: foo bar disk:[path.to]file.txt quux 看起来Perl过于苛刻,用一个不存在的变量的内容替换路径的$data1部分(即什么都没有).运行调试器确认了这一点.我没有提供/ e,所以我认为Perl应该直接替换文本.有没有办法让Perl这样做? (另请注意,我可以在linux命令行中重现类似的行为.)
只需正确混合引号和双引号,您就可以到达:
我们创建了“string”’替换符号’“string”的紧密连接. $perl -pe "s'baz'"'mysub'"'" file1.txt 这是一个DCL级别的解决方案. 对于Perl解决方案,使用q()运算符作为非插值字符串并执行它. $perl -pe "s/baz/q(''mysub')/e" file1.txt (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |