GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo mostrar líneas específicas de un archivo en la línea de comandos de Linux

¿Cómo encuentro la línea n en un archivo en la línea de comandos de Linux? ¿Cómo muestro el número de línea x al número de línea y?

En Linux, hay varias formas de lograr el mismo resultado. La impresión de líneas específicas de un archivo no es una excepción.

Para mostrar la línea 13, puede usar una combinación de cabeza y cola:

head -13 file_name | tail +13

O bien, puede usar el comando sed:

sed -n '13p' file.txt

Para mostrar los números de línea del 20 al 25, puede combinar comandos de cabeza y cola como este:

head -25 file_name | tail +20

O bien, puede usar el comando sed de esta manera:

sed -n '20,25p' lines.txt 

La explicación detallada de cada comando sigue a continuación. También mostraré el uso del comando awk para este propósito.

Mostrar líneas específicas usando comandos de cabeza y cola

Esta es mi forma favorita de mostrar líneas de elección. Me resulta más fácil de recordar y usar.

Use una combinación de comando de cabeza y cola en la siguiente función el número de línea x:

head -x file_name | tail +x

Puede reemplazar x con el número de línea que desea mostrar. Entonces, digamos que desea mostrar la línea 13 del archivo.

[email protected]:~$ head -13 lines.txt | tail +13
This is line number 13

Explicación :Probablemente ya sepa que el comando head obtiene las líneas de un archivo desde el principio, mientras que el comando tail obtiene las líneas desde el final.

La parte "head -x" del comando obtendrá las primeras x líneas de los archivos. Luego redirigirá esta salida al comando tail. El comando tail mostrará todas las líneas a partir del número de línea x.

Obviamente, si toma 13 líneas desde la parte superior, las líneas que comienzan desde el número 13 hasta el final serán la línea 13. Esa es la lógica detrás de este comando.

Ahora tomemos nuestra combinación de comandos de cabeza y cola para mostrar más de una línea.

Digamos que desea mostrar todas las líneas de x a y. Esto incluye las líneas xth y yth también:

head -y lines.txt | tail +x

Tomemos un ejemplo práctico. Suponga que desea imprimir todas las líneas desde la línea número 20 a la 25:

[email protected]:~$ head -25 lines.txt | tail +20
This is line number 20
This is line number 21
This is line number 22
This is line number 23
This is line number 24
This is line number 25

Utilice SED para mostrar líneas específicas

El poderoso comando sed proporciona varias formas de imprimir líneas específicas.

Por ejemplo, para mostrar la décima línea, puede usar sed de la siguiente manera:

sed -n '10p' file.txt

El -n suprime la salida mientras que el comando p imprime líneas específicas. Lea esta guía detallada de SED para aprender y comprenderla en detalle.

Para mostrar todas las líneas desde el número de línea x hasta el número de línea y, use esto:

[email protected]:~$ sed -n '3,7p' lines.txt 
This is line number 3
This is line number 4
This is line number 5
This is line number 6
This is line number 7

Utilice AWK para imprimir líneas específicas de un archivo

El comando awk puede parecer complicado y seguramente implica una curva de aprendizaje. Pero al igual que sed, awk también es bastante poderoso cuando se trata de editar y manipular el contenido de los archivos.

[email protected]:~$ awk 'NR==5' lines.txt 
This is line number 5

NR denota el 'número de registro actual'. Lea nuestra guía de comandos AWK detallada para obtener más información.

Para mostrar todas las líneas de x a y, puede usar el comando awk de la siguiente manera:

[email protected]:~$ awk 'NR>=20 && NR<=25' lines.txt 
This is line number 20
This is line number 21
This is line number 22
This is line number 23
This is line number 24
This is line number 25

Sigue una sintaxis que es similar a la mayoría de los lenguajes de programación.

Espero que este breve artículo le haya ayudado a mostrar líneas específicas de un archivo en la línea de comandos de Linux. Si conoces algún otro truco para este propósito, compártelo con el resto de nosotros en la sección de comentarios.


Linux
  1. Cómo guardar la salida del comando en un archivo en Linux

  2. Cómo extraer el archivo tar.gz en Linux usando la línea de comandos

  3. Con el comando "cat" de Linux, ¿cómo mostrar solo ciertas líneas por número?

  4. Eliminación de líneas específicas de un archivo en la línea de comandos de Linux

  5. ¿Cómo mostrar ciertas líneas de un archivo de texto en Linux?

Pegar comando en Linux (combinar líneas)

Cómo imprimir líneas duplicadas en un archivo de texto en Linux

Cómo mezclar líneas en un archivo en Linux

Cómo quitar líneas de un archivo usando el comando Sed

Cómo encontrar las líneas más largas en un archivo en Linux

Cómo extraer el archivo Tar.xz en la línea de comandos de Linux