首页 > 解决方案 > 流文件内容直到遇到子字符串

问题描述

我正在使用:

bash $ head -n 2 *.xml | grep (..stuff..)

将所有 xml 文件的前 2 行流式传输到 grep 命令。但是,我意识到这对于这些文件的结构并不可靠。

我需要的是流式传输每个 xml 文件的开头,直到遇到特定的子字符串(所有这些文件都有)。

head 不提供该级别的粒度。子字符串只是标签的开始(例如“< tag start”)。我会很感激任何想法。谢谢!

标签: linuxsedgrep

解决方案


我感谢所有的回应。我发现我真的只需要单个标签的内容,而不是从 xml 文件的开头。这简化了解析。例如:

<mt:myTag LOTSOFSTUFF >"

,我真的只需要 LOTSOFSTUFF。所以我只是做了:

grep -oP "<mt:myTag(.*)>" *.xml | grep_more

这确实有效。再次感谢。我真的很感激,也很抱歉,我没有意识到我的用例比我想象的要简单。


推荐阅读