Em geral, cada comando sed trabalha com os mesmos dados de origem e eles não vêem os demais. Isso não é um problema ao usar o shell para canalizar as coisas. Se você não quiser usar o shell na saída do pipe, deverá usar o buffer de retenção.
Isso deve fazer o que você quiser:
sed '/SCF Done/h;g;$!d' <filename>
Isso coloca cada correspondência no buffer de retenção (o h
). Em seguida, depois de ler o arquivo inteiro, ele lê o buffer de retenção (o g
) e imprime apenas a última linha (o $!d
).
Eu acho que isso poderia ser otimizado ainda mais se você pudesse descobrir como obtê-lo para realmente substituir todo o buffer em cada mach, mas deixei de corrigi-lo como um exercício para você. Isso também permitirá que você se livre da parte ;$!d
.