Alternativa para 'cabeça' que não sai?

13

Preciso de um utilitário que imprima as primeiras n linhas, mas continue executando, sugando o restante das linhas, mas não imprimi-las. Eu o uso para não sobrecarregar o terminal com a saída de um processo que precisa continuar em execução (ele grava os resultados em um arquivo).

Achei que podia fazer process | {head -n 100; cat > /dev/null}, mas há algo mais elegante?

IttayD
fonte
2
O processo continuará após o início, apenas não será mais impresso no terminal.
123
7
Que problema você está realmente tentando resolver?
Satō Katsura
2
O que você quer chupar? Se você apenas colocar o tubo na cabeça, a saída restante será descartada.
Julie Pelletier
7
O @JuliePelletier e o stdout serão fechados e os programas bem escritos (aqueles que gravam apenas no stdout, de qualquer maneira) perceberão isso e serão encerrados mais cedo.
5286
@castrap '' PIPE
Satō Katsura

Respostas:

22

Para continuar "sugando" a saída processenquanto imprime apenas as primeiras 100 linhas (ou o que for):

process | awk 'NR<=100'

Ou:

process | sed -n '1,100p'
John1024
fonte
13
Eu normalmente só usar... | tee /dev/null | head ...
David Schwartz
2
@DavidSchwartz sim - é o que eu faria. Muito mais preferível, pois você também pode despejar toda a saída em um arquivo e examiná-la posteriormente. Você nunca sabe quando isso será necessário - na pior das hipóteses, você tem um arquivo em torno do qual substitui ocasionalmente; na melhor das hipóteses, você pode usá-lo como um log para analisar o que / por que aconteceu.
VLAZ 05/07