Como excluir a terceira ocorrência de um padrão em um arquivo e além

1

Como posso encontrar a terceira ocorrência de um padrão em um arquivo (Nota: não em uma linha) e excluir a linha que contém o padrão e as linhas n abaixo (digamos, 5 linhas abaixo) .

por exemplo,

COVER
fafjasfj
isfapifj
ajfsdaijf
COVER
oaijfeiahf
aasdf
fafadf
df
This is a COVER                                             *
efjafa                                                      *
aifaidfj                                                    *
aifhaidfh                                                   *
idfhaifh                                                    *
aidfhiadhf                                                  *
aifhaifh
iafaishf
jgsjg
fbsfgbf

Desejo excluir a linha completa que contém a terceira ocorrência do padrão COVER e as cinco linhas abaixo dela. Essas linhas são indicadas com * s. (Nota: o * s não faz parte do arquivo.

    
por Mukesh Babu 07.12.2014 / 17:39

1 resposta

1

$ awk '$1=="COVER"{l++}l==3{l2++} l!=3 || l2>6' file
COVER
fafjasfj
isfapifj
ajfsdaijf
COVER
oaijfeiahf
aasdf
fafadf
df
aifhaifh
iafaishf
jgsjg
fbsfgbf

A última instrução {print} não é necessária porque, por padrão, awk imprime a linha atual em uma condição verdadeira.

    
por 07.12.2014 / 19:45