es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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>

Tags:  , ,

Answer

  1. Avatar for 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 comando head para mostrar solo las primeras 9 líneas.

    El comando para lograr el resultado deseado es:

    cat archivo | tail -n +3 | tail -n +3 | head -n9
    

    La salida de este comando sería:

    1
    2
    ...
    9
    10
    

    Esta solución utiliza una combinación de los comandos tail y head para lograr el resultado correcto. El primer comando tail -n +3 omite las dos primeras líneas y el segundo comando tail -n +3 omite las dos últimas líneas. Finalmente, el comando head -n9 muestra solo las primeras 9 líneas.

Comments are closed.