我正在尝试弄清楚如何使用bash在几个XML文件中打印某个行。这些文件位于多个文件夹中。我需要打印的行是一个精确的XML标签 <name></name>
。
我的目标:
- 通过文件夹搜索
- 一行打印文件夹位置
- 第二行上的打印文件名
-
打印
之间的内容
我只需要名称,而不是完整的路径,我确实需要它添加到.txt文件中。香港专业教育学院尝试了bash,但我粘在这一中。
编辑:我还忘了提到这是一件被添加到其他外壳脚本中,所以我不确定我是否可以在其中工作。
处理XML
时,更好的方法是使用xmllint
或xmlstarlet
。
示例:
find /path -iname '*xml' -exec xmllint --xpath '//name/text()' {} +
将递归地完成技巧。
使用GREP和在目录上递归的正则表达式显示您的文件名(包括路径),其中标签中的标签:
grep -r "<name>.*</name>" /path/to/directory