如何在这些标签之间搜索任何内容

时间:2010-07-09 09:02:10

标签: search sed grep

如何在这些标签之间搜索任何内容,我想列出f:facet xml元素之间存在某些值的所有出现

<f:facet name="header">Name</f:facet>

2 个答案:

答案 0 :(得分:1)

如果每个f:facet标记都在一个单独的行上,那么您可以这样做:

cat file.xml | sed -ne 's/<f:facet[^>]*>//;s/<\/f:facet>//p'|grep Name

如果你想查看多个文件,你可以这样做:

find . -type f| xargs sed -ne 's/<f:facet[^>]*>//;s/<\/f:facet>//p'

答案 1 :(得分:1)

这将列出<f:facet>标记之间发生的任何内容:

sed 's/<f:facet[^>]*>\([^<]*\)<\/f:facet>/\1/'

这个测试:

echo '<f:facet name="header">Name</f:facet>' | sed 's/<f:facet[^>]*>\([^<]*\)<\/f:facet>/\1/'

输出:

Name

在当前目录中的所有文件上运行它:

sed 's/<f:facet[^>]*>\([^<]*\)<\/f:facet>/\1/' *

在所有目录下的所有文件中运行它:

find /path/to/common -type f -print0 | xargs -0 sed 's/<f:facet[^>]*>\([^<]*\)<\/f:facet>/\1/'

如果您从Windows CMD.EXE提示符运行find,则可能是Windows FIND.EXE正在提供该错误消息。试试find --helpfind /?。前者是GNU find,后者是Windows。如果前者给你一个错误信息而后者给你帮助文本,那么这将确认问题。

您需要启动一个Cygwin实例。