使用bash打印XML标记

时间:2012-10-30 21:10:10

标签: xml bash search printing

我试图找出如何使用bash在一些XML文件中打印某一行。这些文件位于多个文件夹中。我需要打印的行是一个名为的精确XML标记 <name></name>

我的目标:

  • 搜索文件夹
  • 在一行打印文件夹位置
  • 在第二行打印文件名
  • 打印

    之间的内容

我只需要名称而不是完整路径,我确实需要将其添加到名为what的.txt文件中。我试过bash,但我坚持这个。

编辑: 我也忘了提到这是一个被添加到其他shell脚本的部分所以我不确定我是否可以让grep在其中工作。

2 个答案:

答案 0 :(得分:2)

在处理XML时,更好的方法是使用xmllintxmlstarlet等实用工具。

以示例:

find /path -iname '*xml' -exec xmllint --xpath '//name/text()' {} +

这将以递归方式完成。

答案 1 :(得分:1)

在目录上递归使用grep和正则表达式会显示包含标记的文件名(包括路径):

grep -r "<name>.*</name>" /path/to/directory