使用 sed 连接 xml 标签 [重复]
Posted
技术标签:
【中文标题】使用 sed 连接 xml 标签 [重复]【英文标题】:Use sed to concatenate xml tags [duplicate] 【发布时间】:2021-12-11 18:02:41 【问题描述】:我正在尝试从以下 xml 标记中提取和连接 <id>
和 <name>
的值
<applications><application>
<id>292</id>
<name>Test</name>
<accountGuid>2-b01e-2ef14d11c5e0</accountGuid>
</application>
<application>
<id>195</id>
<name>State</name>
<accountGuid>2-b01e-2ef14d11c5e0</accountGuid>
</application>
<application>
<id>266</id>
<name>Home</name>
<accountGuid>2-b01e-2ef14d11c5e0</accountGuid>
</application>
</applications>
想要的输出是
292:Test
195:state
266:Home
我使用下面的 sed 提取,但它给了我输出
sed -n 's:.*<id>\(.*\)</id>.*:\1:p;s:.*<name>\(.*\)</name>.*:\1:p'
292
Test
195
state
266
Home
请大家帮忙看看我应该怎么做才能获得所需的输出?
【问题讨论】:
Don't Parse XML/html With Regex. 我建议使用 XML/HTML 解析器 (xmlstarlet, xmllint ...)。 【参考方案1】:使用 xmlstarlet:
xmlstarlet select --text --template --match "/applications/application" --value-of "concat(id,':',name)" -n file.xml
输出:
292:测试 195:状态 266:首页见:xmlstarlet select --help
【讨论】:
以上是关于使用 sed 连接 xml 标签 [重复]的主要内容,如果未能解决你的问题,请参考以下文章