我尝试使用perl编辑tomcat配置文件。我想取消注释xml文件中的以下行。我用perl尝试过它,但它不会工作。
<!--
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />
-->
这就是我得到的:
perl -i -pe 's~<!--\n <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"\n maxThreads="150" SSLEnabled="true" scheme="https" secure="true"\n clientAuth="false" sslProtocol="TLS" />\n -->~<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"\n maxThreads="150" SSLEnabled="true" scheme="https" secure="true"\n clientAuth="false" sslProtocol="TLS" />~' $CATALINA_HOME/conf/server.xml
另一个问题:我能找到并用正则表达式替换字符串吗?
感谢您的帮助!
答案 0 :(得分:1)
正则表达式不是修改XML的正确工具。 使用XML感知库。例如,XML::LibXML:
#! /usr/bin/perl
use warnings;
use strict;
use XML::LibXML;
my $xml = 'XML::LibXML'->load_xml(location => 'file.xml');
my $comment = $xml->findnodes('//comment()')->[0];
my $inner = 'XML::LibXML'->load_xml(string => $comment->textContent)
->getFirstChild;
$comment->replaceNode($inner);
print $xml;
或更短xsh 包装器:
open file.xml ;
xinsert chunk string(//comment()[1]) replace //comment()[1] ;
save :b ;
答案 1 :(得分:0)