Tente:
sed -e '/^a1$/,+1d' "filename"
Isso significa de / ^ a1 $ / para a próxima linha, delete
O ^ e $ asseguram que você corresponde a linha inteira, portanto, um a1 oculto não será correspondido.
Digamos que eu tenha este arquivo de linha 857835, contendo coisas como esta:
a1
rubbish1
rubbish2
rubbish3
rubbish4
a1
rubbish5
rubbish6
rubbish7
rubbish8
E desejo remover todas as ocorrências de a1
e a próxima linha ( rubbish1
e rubbish5
neste exemplo). Como faço isso?
Eu testei grep 'a1' -v -A1
sem sucesso e meus conhecimentos de sed não são muito bons:}
Meu Google-fu não conseguiu me ajudar desta vez, alguém, por favor, ajude!
O seguinte irá funcionar em não-GNU sed
(a sintaxe do endereço ,+1
é uma extensão GNU):
sed -e '/^a1$/,/^/d' my_file >my_filtered_file
"Começando em uma linha que lê exatamente 'a1' e terminando na próxima linha para a qual o início da linha existe (ou seja, a próxima linha), exclua."
É muito menos extensível do que a resposta de @ asoundmove, já que excluir um número diferente de linhas levaria um script totalmente diferente.
Tags grep text-processing sed