¿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.
Imprimir una sola línea específica
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.
Imprimir rango específico de líneas
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.