我一直在尝试定期表达。我想在tomcat service.xml文件中提取sslconnector。
这是我文件的输入。
<?xml version='1.0' encoding='utf-8'?>
<Server port="${shutdown.port}" shutdown="5ijXSyVl4Y9r">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<Listener className="org.apache.catalina.core.JasperListener" />
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
<GlobalNamingResources>
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
<Service name="Catalina">
<Connector port="${http.port}" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="${https.port}" />
<Connector port="${https.port}" protocol="org.apache.coyote.http11.Http11Protocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
keystoreFile="/opt/ais/install/tomcat/security/ais.jks" keystorePass="a1ss3cr3t"
clientAuth="false" sslEnabledProtocols="TLSv1.1,TLSv1.2" />
<Connector port="${ajp.port}" protocol="AJP/1.3" redirectPort="${https.port}" connectionTimeout="20000"/>
<Connector port="${ajp.port}" protocol="AJP/1.3" redirectPort="${https.port}" connectionTimeout="20000"/>
<Engine name="Catalina" defaultHost="localhost" jvmRoute="${tomcat.node.name}">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="access_log" pattern="%h %l %u %t %r %s %b %D %I %{JSESSIONID}c" resolveHosts="false" rotatable="false"/>
</Host>
</Engine>
</Service>
</Server>
&#13;
我正在尝试这个sed句子。 &#34; sed -n&#39; /&lt;。 [抄送] onnector。 /&gt; / p&#39; &#34;但不看,我只能得到ajp连接器。
一些想法?
答案 0 :(得分:0)
以下(GNU)sed
可能有效:
sed -n '/<Connector /,/\/>/p'
它从包含<Connector
的行打印到包含下一个/>
的行(可以是同一行)。
它适用于您的示例数据,但在许多情况下可能会失败,例如标记包含子项并被</Connector>
关闭而不是自动关闭。如果您的数据有足够的变体,您可能希望使用XML选择语言,例如XPath,其中//Connector
足以获得所有连接器节点,无论其格式如何。