¿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?


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'

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.