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?


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'

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.