Para excluir o segundo test e a linha seguinte:
$ awk '/test/ && ++f == 2 {getline;next} 1' file.txt
test
apple
mango
carrot
test
banana
gauva
Como funciona:
-
/test/ && ++f == 2 {getline;next}Sempre que encontramos a linha correspondente à regex
test, incrementamos a variávelfe, sef==2, lemos em outra linha comgetlinee, em seguida, pula para recomeçar na linhanext. Isso tem o efeito de descartar a linhateste a linha a seguir. -
1Para todas as outras linhas, imprimimos a linha. (
1é awk taquigrafia para imprimir a linha.)
Alternar
Nesta abordagem, capturamos o número da linha da segunda ocorrência da linha correspondente test na variável N .
Imprimimos uma linha apenas se N ainda não estiver atribuído ou se a linha atual tiver pelo menos duas linhas após o número da linha N .
$ awk '/test/ && ++f == 2 {N=NR} (!N) || NR>=N+2' file.txt
test
apple
mango
carrot
test
banana
gauva