Exclua linhas consecutivas se os padrões corresponderem em cada linha

1

Bom dia,

Eu queria saber como excluir linhas consecutivas quando esse padrão é encontrado: /^pt [a-z]\npy [0-9][0-9][0-9][0-9]\n//

Entradas esperadas

pt a
py 01234
pt b
cd abc
py 5678

Resultado esperado

pt b
cd abc
py 5678

Agradeço muito antecipadamente por qualquer pista.

    
por Another.Chemist 01.11.2014 / 03:38

2 respostas

2

Isso deve funcionar:

sed '/^pt [a-z]/{N;/py [0-9][0-9][0-9][0-9]/d}' your_file

Expansão

  • Se a linha atual corresponder a /^pt [a-z]/ , executaremos o que há entre chaves.
  • N acrescenta a próxima linha ao buffer ativo.
  • Se o buffer ativo agora corresponde a /py [0-9][0-9][0-9][0-9]/ , excluímos (ou seja, não imprimimos) o conteúdo do buffer ativo. Isso é feito por d .
por 01.11.2014 / 03:41
0

Através do Perl,

$ perl -00pe 's/^pt [a-z]\npy [0-9]{5}\n//' file
pt b
cd abc
py 5678
    
por 01.11.2014 / 06:23

Tags