¿Alternativa a 'cabeza' que no sale?

13

Necesito una utilidad que imprima las primeras n líneas, pero luego continúe ejecutándose, absorbiendo el resto de las líneas, pero no imprimiéndolas. Lo uso para no abrumar el terminal con la salida de un proceso que necesita continuar ejecutándose (escribe los resultados en un archivo).

Pensé que podía hacer process | {head -n 100; cat > /dev/null}, pero ¿hay algo más elegante?

IttayD
fuente
2
El proceso continuará después del encabezado, simplemente ya no se imprimirá en el terminal.
123
77
¿Qué problema en realidad tratando de resolver?
Satō Katsura
2
¿Qué quieres decir con chuparlos? Si solo canaliza a la cabeza, el resultado restante se descartará.
Julie Pelletier
77
@JuliePelletier y stdout se cerrarán y los programas bien escritos (aquellos que solo escriben en stdout, de todos modos) lo notarán y finalizarán antes.
cas
@castrap '' PIPE
Satō Katsura

Respuestas:

22

Para continuar "absorbiendo" la salida processmientras solo imprime las primeras 100 (o lo que sea) líneas:

process | awk 'NR<=100'

O:

process | sed -n '1,100p'
John1024
fuente
13
Usualmente solo uso... | tee /dev/null | head ...
David Schwartz
2
@DavidSchwartz sí, es lo que haría. Mucho más preferible, ya que también puede volcar toda la salida en un archivo y examinarla en un momento posterior. Nunca se sabe cuándo será necesario; en el peor de los casos, tiene un archivo alrededor que ocasionalmente sobrescribe, en el mejor de los casos, puede usarlo como un registro para analizar qué / por qué sucedió.
VLAZ