No final, encontrei este oneliner matador:
sed -i '1795,$ {/PaTtErN/d}' file.log
tenha cuidado com a flag -i
e leia o manual antes de tentar
O título diz tudo. Eu tentei várias sintaxes, todas falharam. Talvez isso não seja possível com um único tiro ... É claro que os mecanismos de pesquisa não ajudaram, nem o manual que é difícil de entender, nem o comando info. Todos carecem de um exemplo com um intervalo de "tipo de" pré-seleção
No final, encontrei este oneliner matador:
sed -i '1795,$ {/PaTtErN/d}' file.log
tenha cuidado com a flag -i
e leia o manual antes de tentar
Possível com AWK
, também:
bash-4.3$ cat input.txt
line one
and another line
running out of ideas for text
Oh, look , banana !
some more lines
this is boring
But what is not boring ? text processing !
bash-4.3$ awk 'NR<4; NR>4 && $0!~/banana/' input.txt
line one
and another line
running out of ideas for text
some more lines
this is boring
But what is not boring ? text processing !
A ideia aqui é imprimir todas as linhas com menos de 4 intocadas. Linhas maiores que 4 que não contenham um padrão específico (neste caso, a palavra "banana") serão impressas e, obviamente, aquelas que o contiverem não serão impressas.