Aqui está uma solução usando sed
:
sed -n '20,$d;/apple/h;19{x;p}'
-
-n
- suprime a impressão de linhas
-
20,$d
- para qualquer linha de 20
até o final do arquivo ( $
), delete ( d
) it
-
/apple/h
- para qualquer linha que corresponda à regex /apple/
, copie-a para o " espaço de espera " ( h
)
-
19{x;p}
- na linha 19
, troque o padrão e mantenha espaços ( x
) e imprima o espaço padrão ( p
)
Observe que é necessário usar a linha 19
para a impressão final, porque todas as linhas depois disso são excluídas. Caso contrário, você poderia usar o endereço " última linha " - $
.
Neste teste, adicionei um apple
à linha 23.
$ sed -n '20,$d;/apple/h;19{x;p}' < file
linenum 8.apple2