我想从server.xml获取tomcat服务器配置文件的端口。
我的server.xml在下面。
如何在没有评论部分的情况下从server.xml获取端口
我只想在没有8080的情况下只获得50000。
<Connector port="50000" maxHttpHeaderSize="8192" protocol="HTTP/1.1"
maxThreads="2000" minSpareThreads="50" maxSpareThreads="150" />
<!--
<Connector executor="tomcatThreadPool"
port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
-->
答案 0 :(得分:0)
以下是不同的结果,请查看周围的更多详细信息。
grep -oP 'port=.*? (?=maxHttpHeaderSize)' server.xml
port="50000"
grep -oP 'port=\K.*? (?=maxHttpHeaderSize)' server.xml
"50000"
grep -oP 'port="\K.*?(?=" maxHttpHeaderSize=)'
50000
答案 1 :(得分:0)
从我可以提出的文本文件中删除所有注释的最简单的解决方案是:
| sed 's/<!--/\x0<!--/g;s/-->/-->\x0/g' | grep -zv '^<!--' | tr -d '\0' |
解释:
sed
会输入null
这样的字符:
<Connector port="50000" maxHttpHeaderSize="8192" protocol="HTTP/1.1"
maxThreads="2000" minSpareThreads="50" maxSpareThreads="150" />
\0<!--
<Connector executor="tomcatThreadPool"
port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
-->\0
比grep -z
将该字符视为&#34;行分隔符&#34;并移除中间部分,最后tr -d
将再次移除\0
,以便后续的grep不会将其视为二进制文件。
只需将它与您正在使用的grep结合使用,例如:
cat server.xml | sed 's/<!--/\x0<!--/g;s/-->/-->\x0/g' | grep -zv '^<!--' | tr -d '\0' | grep -o 'port="[0-9]*' | grep -o '[0-9]*$'
输出:
50000