Ste*_*hen 5 linux command-line regular-expression
我想在 linux 中找到多行正则表达式的结果。我尝试过 grep,但像大多数 linux 实用程序一样,它是基于行的。
是否有类似的东西可以让我跨多行搜索并简单地输出匹配项?
不是 perl、awk 等,除非我可以直接给它一个正则表达式。
问题
我已经在我的 subversion 存储库上执行了 svn propget --recursive,现在想要提取所有主干条目,这需要 ^http[^]主干形式的正则表达式。$$(从行首的“http”开始,以空行结束。
我不知道您要解析的确切格式。如果http始终位于段落的开头(其中段落由一个或多个空行分隔),则可以在段落模式下调用 awk(每个段落是一条记录)并打印以 开头的记录http。Perl 有类似的模式。
awk -vRS= '/^http[^ ]/'
perl -000 -ne 'print if /^http[^ ]/'
Run Code Online (Sandbox Code Playgroud)
如果前面并不总是有空行http,则可以在看到http空行并停止时开始打印。例如:
awk '/^http[^ ]/, /^$/'
perl -ne 'print if /^http[^ ]/../^$/'
Run Code Online (Sandbox Code Playgroud)