Uma nota de aviso:
Quando você faz:
cmd | head
e se a saída for truncada, isso pode fazer com que cmd
seja eliminado por um SIGPIPE, se ele gravar mais linhas depois que head
tiver saído. Se não for o que você deseja, se você quiser que cmd
continue sendo executado depois, mesmo que sua saída seja descartada, será necessário ler, mas descartar as linhas restantes em vez de sair após 10 linhas terem sido impressas (por exemplo, com sed '1,10!d'
ou awk 'NR<=10'
em vez de head
).
Então, para as duas abordagens diferentes:
saída truncada, cmd pode ser eliminada
cmd | awk 'NR>5 {print "TRUNCATED"; exit}; {print}'
cmd | sed '6{s/.*/TRUNCATED/;q;}'
Observe que a implementação mawk
de awk
acumula um buffer cheio de entrada antes de começar a processá-lo, portanto cmd
pode não ser eliminado até ter escrito um buffer cheio (8KiB no meu sistema AFAICT) dados. Isso pode ser contornado usando a opção -Winteractive
.
Algumas implementações de sed
também leem uma linha de antecedência (para saber qual é a última linha ao usar o endereço $
), portanto, com essas, cmd
só pode ser eliminado depois de ter saído Linha 7 th .
saída truncada, o restante descartado para que cmd não seja eliminado
cmd | awk 'NR<=5; NR==6{print "TRUNCATED"}'
cmd | sed '1,6!d;6s/.*/TRUNCATED/'