【发布时间】:2013-02-04 17:23:54
【问题描述】:
我正在尝试在大量 xml 文件中搜索缺少特定标记或该标记内的值为 0 的文件。
基本上,每个 xml 文件都有一个或多个 LIBRARY 标签,并且嵌套在其中的是一个或多个 SECTION 标签,而其中嵌套的是一个或多个 SHELF 标签。在 SHELF 标签内 应该 是一个 BOOK 标签,其整数值不为零。
我需要在每个 SECTION 的 first SHELF 中找到此 BOOK 值为 0 或缺少 BOOK 但仅的文件。所以如果有多个 SECTION 标签嵌套在多个 LIBRARY 标签中,我需要检查每个 SECTION 中的第一个 SHELF。
<LIBRARY>
<SECTION>
<SHELF>
<BOOK>10000</BOOK>
</SHELF>
</SECTION>
</LIBRARY>
我正在尝试编写一个 Unix 脚本来实现这一点,方法是搜索给定目录中的每个文件并返回与该模式匹配的文件列表。我一直在寻找一种使用 sed 的方法,但我似乎无法找到解决这个特定问题的方法。此外,xml 文件是多行文件,如上所示。感谢你们提供的任何帮助!
【问题讨论】:
-
考虑使用 xpath、xml 模式来完成这项工作。如果你更喜欢unix/linux cmdline,有xmllint,xsltclient你可以考虑。
-
为此使用 xml 工具,例如 XMLStarlet 而不是 grep 或 sed。