Existe uma ferramenta no linux que permite expressões regex multilinha?

5

Eu estou querendo encontrar os resultados de uma expressão regular multi-linha no linux. Eu tentei grep, mas como a maioria dos utilitários linux é baseado em linha.

Existe algo semelhante que me permite pesquisar em várias linhas e simplesmente gerar as correspondências?

Não perl, awk etc, a menos que eu possa dar um regex diretamente.

O problema

Eu fiz svn propget --recursive em meus repositórios do subversion e agora quero extrair todas as entradas do trunk, o que exigiria uma expressão regular do formulário ^ http [^] trunk. $$ ( onde começa em "http" no início da linha e termina em uma linha vazia.

    
por Stephen 09.08.2011 / 03:35

1 resposta

3

Eu não sei de antemão o formato exato que você está tentando analisar. Se http estiver sempre no início de um parágrafo (em que os parágrafos são separados por uma ou mais linhas em branco), você poderá chamar awk no modo de parágrafo (cada parágrafo é um registro) e imprimir registros que começam com http . Perl tem um modo similar.

awk -vRS= '/^http[^ ]/'
perl -000 -ne 'print if /^http[^ ]/'

Se nem sempre houver uma linha em branco antes de http , você poderá começar a imprimir quando vir http e parar em uma linha em branco. Por exemplo:

awk '/^http[^ ]/, /^$/'
perl -ne 'print if /^http[^ ]/../^$/'
    
por 10.08.2011 / 02:39