我试图找出如何使用bash在一些XML文件中打印某一行。这些文件位于多个文件夹中。我需要打印的行是一个名为的精确XML标记
<name></name>
。
我的目标:
打印
之间的内容
我只需要名称而不是完整路径,我确实需要将其添加到名为what的.txt文件中。我试过bash,但我坚持这个。
编辑: 我也忘了提到这是一个被添加到其他shell脚本的部分所以我不确定我是否可以让grep在其中工作。
答案 0 :(得分:2)
在处理XML
时,更好的方法是使用xmllint
或xmlstarlet
等实用工具。
以示例:
find /path -iname '*xml' -exec xmllint --xpath '//name/text()' {} +
这将以递归方式完成。
答案 1 :(得分:1)
在目录上递归使用grep和正则表达式会显示包含标记的文件名(包括路径):
grep -r "<name>.*</name>" /path/to/directory