【发布时间】:2019-05-05 22:00:05
【问题描述】:
我正在尝试在文件中搜索一些字符串并使用 perl 替换它们:
perl -pe "s/filename/$FNAME/" Header.xml > $HDIR/$FNAME.xml
如何搜索和替换多个字符串,因为添加另一个命令只会覆盖输出文件:
perl -pe "s/RBRef/$REF/" HeaderRBRS.xml > $HDIR/$FNAME.xml
perl -pe "s/MessageIdentifier/$MessageIdentifier/" HeaderRBRS.xml > $HDIR/$FNAME.xml
perl -pe "s/FileDigestValue/$digestNr/" HeaderRBRS.xml > $HDIR/$FNAME.xml
perl -pe "s/filename/$FNAME/" HeaderRBRS.xml > $HDIR/$FNAME.xml
在最后一种情况下,每次只会执行perl -pe "s/filename/$FNAME/" HeaderRBRS.xml > $HDIR/$FNAME.xml。
提前致谢。
【问题讨论】:
-
您应该编写一个 perl 脚本并传入一个字符串数组以进行搜索和替换。
-
您应该使用适当的库来处理 XML 文件。
-
另外,通过使用双引号,您可以从 shell 变量构建 Perl 代码。如果变量包含斜杠,代码将中断。使用 Perl 变量会更好,因为它们是真实变量,而不仅仅是扩展宏。
-
什么库? @choroba
-
我是XML::LibXML的粉丝,但XML::Twig也不错。
标签: linux bash perl search replace