dot*_*hen 4 grep bash xml locate file-search
我正在处理 XML 文件,每个文件都可能有几十行长。在一个目录结构中,实际上有数百个这样的文件。是的,它是 Magento。
我需要找到包含该<foo><bar><boom><bang>元素的文件。一个<boom><bang>标签可以在其他变量定义的,所以我需要搜索的完整路径不只是结束标签或标签。每个标签之间可能有几十行,它们之间还有其他标签:
<foo>
<hello_world>
... 50 lines ....
</hello_world>
<bar>
<giraffe>
... 50 lines ....
</giraffe>
<boom>
<bang>Vital information here</bang>
</boom>
</bar>
</foo>
Run Code Online (Sandbox Code Playgroud)
搜索定义的文件的优雅*nix 方式是<foo><bar><boom><bang>什么?我目前正在使用最新的 Debian 派生发行版。
这是我目前的解决方案,远非雄辩:
$ grep -rA 100 foo * | grep -A 100 bar | grep -A 100 boom | grep bang | grep -E 'foo|bar|boom|bang'
Run Code Online (Sandbox Code Playgroud)
你可以尝试xmlstarlet到selECT iF中的路径存在,那么输出的filename:
find . -name '*.xml' -exec xmlstarlet sel -t -i '/foo/bar/boom/bang' -f -n {} +
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
225 次 |
| 最近记录: |