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