sed
Você pode usar sed
:
sed -e '/^10$/{x;p;}' -e 'x;d' < datafile
Explicação:
O endereço /^10$/
corresponde à linha que contém 10. Quando corresponde, a seguinte série de comandos é executada, {x;p;}
, que troca ( x
) o espaço de armazenamento com o espaço padrão e imprime ( p
) o espaço padrão.
O espaço de espera contém a linha anterior devido ao resto do script. Para cada linha do arquivo, troque ( x
) o espaço de espera com o espaço de padrão e exclua ( d
) o que estiver no espaço de padrão.
Diferentemente do primeiro comando, que possui um prefixo de endereço que faz com que ele corresponda apenas quando a linha 10 é vista, esses comandos não têm prefixo e, portanto, correspondem a cada linha do arquivo. O resultado final é que continuamos colocando a última linha vista no espaço de espera, e o fato de excluirmos o espaço padrão significa que não há saída além de nossa saída explícita quando vemos 10.