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 utilizar 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
                      
                    

Hagamos una práctica example. 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
                      
                    

Use SED para mostrar líneas específicas

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

Para examplepara 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
                      
                    

Use 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 detallada de comandos AWK 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.

Related Posts