Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我试图弄清楚如何使用 bash 在几个 XML 文件中打印某一行。这些文件位于多个文件夹中。我需要打印的行是一个名为 <name></name>.
<name></name>
我的目标:
打印介于两者之间的内容
我只需要名称而不是完整路径,我确实需要将它添加到一个名为 .txt 的文件中。我尝试过使用 bash,但我坚持使用这个。
编辑:我也忘了提到这是一个被添加到其他 shell 脚本的片段,所以我不确定我是否可以让 grep 在其中工作。
处理时XML,更好的方法是使用真正的工具,如xmllintor xmlstarlet。
XML
xmllint
xmlstarlet
举例:
find /path -iname '*xml' -exec xmllint --xpath '//name/text()' {} +
这将递归地做到这一点。
在目录上递归使用 grep 和正则表达式会显示带有标签的文件名(包括路径):
grep -r "<name>.*</name>" /path/to/directory