【发布时间】:2014-11-07 20:15:03
【问题描述】:
使用 Bash 变量作为字符串文字通过 Perl 行传递给 Regex 表达式:
我有一个 Bash 脚本,可以通过 RegEx 语句对 XML 文件进行一些编辑。该语句在 Perl 中效果很好,但在 Bash 中效果不佳,但问题是将变量传递到 Regex 语句的替换部分。使用字符串文字都很好,但不实用,因为需要编程。下面是一个小sn-p。
示例 XML Test.xml:
<?xml version="1.0" encoding="UTF-8"?>
<Root>
<NodeA>12345678</NodeA>
<NodeB>5551212</NodeB>
<NodeC>a1fea1f8</NodeC>
</Root>
示例适用于文字字符串:
xml=`cat Test.xml`
value="TESTttt"
# Perl flavor
new_xml=`echo ${xml} | perl -ne 's/(\<NodeB\>).*?(\<\/NodeB\>)/\1New_String\2/m;print $_'`
如何将变量value 传递到Regex 语句的替换字符串中,将'New_String' 替换为合乎逻辑的?
【问题讨论】:
-
Perl 可能使用了
argv构造。