【发布时间】:2021-02-17 20:15:04
【问题描述】:
在一个 XML 文件的每个 XML 块中有多个端口配置。
下面的示例有两个端口配置。一个在<Server>,另一个在<Connector>。
我只想更改 <Connector> 块中的端口。
在这种情况下,如何使用sed 命令解决这个问题?
(我需要一个只使用sed 命令的解决方案,因为它应该在任何unix env 上运行。)
(我想指定特定的块作为名称。更改第n个块以匹配port文本的方法不适用。因为文件中有更多port配置作为注释。)
服务器.xml
<?xml version='1.0' encoding='UTF-8'?>
<Server port="8005" shutdown="SHUTDOWN">
<Service name="Catalina">
<Connector port="80" protocol="HTTP/1.1"/>
<Engine name="Catalina" defaultHost="localhost">
<Host name="localhost" appBase="webapps"/>
</Engine>
</Service>
</Server>
【问题讨论】:
-
Don't Parse XML/HTML With Regex. 我建议使用 XML/HTML 解析器 (xmlstarlet, xmllint ...)。
-
@Cyrus 这是合理的。我会找到使用python的方法。非常感谢。
标签: xml unix sed command-line