【发布时间】:2014-04-28 21:03:08
【问题描述】:
我有一个如下的 xml 文件,我需要使用一些 unix 命令“en”。
<void method="put">
<string>LANGUAGE</string>
<string>en</string>
</void>
使用以下命令(从谷歌的某个链接获得),
sed -n '/string/{s/.*<string>//;s/<\/string.*//;p;}' Locale.xml
我得到的输出为
LANGUAGE
en
所以我用了
sed -n '/string/{s/.*<string>//;s/<\/string.*//;p;}' Locale.xml | tail -1
但是 sed 中是否有任何选项可以让我只获得第二个值?
【问题讨论】:
-
使用 XML 解析器可能是更好的选择。
-
xpath 的确切用例。如果您需要使用 shell 脚本包装它,您可以使用工具
xmllint和--xpath。在查看您的文档结构之前,我无法提供进一步的建议。如果您希望脚本稳定,请不要尝试在 xml 上使用 awk/sed/grep。好吧,您可以使用它们进行快速而肮脏的拍摄/测试。 -
XML 不是正则语言,这意味着您无法有效地将其结构与正则表达式匹配。