Isso deve funcionar:
printf "one\ntwo\n" | awk 'NR>1{print PREV} {PREV=$0} END{printf("%s",$0)}' ; echo " done"
O script sempre imprime a linha anterior em vez da atual, e a última linha é tratada de forma diferente.
O que faz mais detalhadamente:
-
NR>1{print PREV}
Imprimir linha anterior (exceto a primeira vez). -
{PREV=$0}
Armazena a linha atual na variávelPREV
. -
END{printf("%s",$0)}
Finalmente, imprima a última linha sem quebra de linha.
Observe também que isso removeria no máximo uma linha vazia no final (não há suporte para remover "one\ntwo\n\n\n"
).