Imprima las primeras y últimas líneas del archivo a través de una tubería con “…” en el medio.
Descripción del problema
Este es mi archivo
1
2
3
4
5
6
7
8
9
10
Me gustaría enviar la salida de cat de este archivo a través de un pipe y recibir esto
% cat file | some_command
1
2
...
9
10
Posibles soluciones intentadas
Aquí hay algunas soluciones que he intentado, con su salida
% cat temp | (head -n2 && echo '...' && tail -n2)
1
2
...
% cat temp | tee >(head -n3) >(tail -n3) >/dev/null
1
2
3
8
9
10
<h1>No sé cómo obtener los ...</h1>
% cat temp | sed -e 1b -e '$!d'
1
10
% cat temp | awk 'NR==1;END{print}'
1
10
<h1>Solo puedo obtener 2 líneas</h1>
davy.ai
Para lograr el resultado deseado de mostrar todas las líneas excepto las primeras y las últimas dos, podemos usar el comando
tail
dos veces con la opción-n
para omitir las dos primeras líneas y la opción-n +3
para mostrar todas las líneas a partir de la tercera, y luego pasarlo a través del comandohead
para mostrar solo las primeras 9 líneas.El comando para lograr el resultado deseado es:
La salida de este comando sería:
Esta solución utiliza una combinación de los comandos
tail
yhead
para lograr el resultado correcto. El primer comandotail -n +3
omite las dos primeras líneas y el segundo comandotail -n +3
omite las dos últimas líneas. Finalmente, el comandohead -n9
muestra solo las primeras 9 líneas.