Eu usaria um comando perl assim:
perl -ne 'if($_=~/^-=Begin/){@last=@block; @block=(); push(@block,$_);}else{push(@block,$_)}; END{@last=@block; print @last}'
Explicação:
-
perl -ne '- > ler linha de entrada sábia -
if($_=~/^-=Begin/){@last=@block; @block=();push(@block,$_);}- > liberar o último bloco para a matriz por último e iniciar o novo bloco se a linha começar com - = Iniciar -
else{push(@block,$_)};- > adicionar linha atual para bloquear -
END{@last=@block; print @last}'- > liberar o último bloco e imprimi-lo
Para ler sid_changes.log e escrever em outfile.log , você pode executá-lo assim:
perl -ne '...' < sid_changes.log > outfile.log