Se um arquivo contiver o seguinte:
Line 1
Line 2
Line 3
Line 4
Line 5
Line 6
Line 7
Line 8
Line 9
Como deletar as linhas acima de duas linhas antes da "Linha 5", para que o arquivo agora contenha apenas o seguinte?
Line 3
Line 4
Line 5
Line 6
Line 7
Line 8
Line 9
Isso pode ser mais simples usando
ed
- que suporta deslocamentos de endereço:ou (modificando o arquivo no local)
Esses problemas são mais fáceis de resolver primeiro invertendo a linha de entrada. Por exemplo:
n && !--n{exit}
se tornarátrue
quandon
atingir0
. Nesse caso, isso significa a linha que contémLine 5
seguida de mais duas linhas.Com
sed
:Nota : As soluções acima não funcionarão se houver várias correspondências, pois corresponderiam à última ocorrência no arquivo. Aqui está uma solução alternativa:
Se você tiver um arquivo com menos de 10.000 linhas, poderá usar isto
Usando
pcregrep
: