Agregar números de línea a la salida estándar de archivos de texto en la terminal

En el siguiente artículo vamos a ver algunas formas de añadir los números de línea a los archivos de texto que visualicemos desde la terminal. Si alguna vez te has preguntado cómo agregar estos números de línea a la salida estándar de archivos de texto de tu Gnu/Linux, este breve artículo va a intentar explicar diferentes maneras de hacerlo.

Hay varias maneras de agregar los números de línea a un archivo de texto. A continuación vamos a ver 6 métodos diferentes para hacerlo. Imagino que además de los que a continuación se van a poder ver, habrá algunas otras maneras, pero para empezar, estas son suficientes.

Agregar números de línea a la salida estándar de archivos de texto

Para empezar, vamos a crear un archivo llamado archivo.txt. En el añadiré unas cuantas líneas para dar contenido, las cuales estarán identificadas. Para ver el contenido del archivo que acabo de crear, abriremos la terminal (Ctrl+Alt+T) y escribimos en ella:

cat archivo.txt

Usando el comando nl

Como puede verse en el resultado del comando cat, el archivo tiene 10 líneas, con tres de ellas vacías. Agregaremos los números de línea mediante el comando nl. Para hacerlo, ejecuta:

nl archivo.txt

Como se ha podido ver en la anterior captura, el comando nl no tiene en cuenta las líneas vacías. Solo agrega los números a líneas no en blanco. Si quieres numerar todas las líneas, incluidas las líneas en blanco, ejecuta:

nl -b a archivo.txt

Además, para una mayor claridad a la hora de leer el resultado, podremos agregar un símbolo después de los números. Por ejemplo, para agregar un punto después de los números, ejecuta:

nl -s "." archivo.txt

Es posible que desees alinear el ancho de la salida. Para hacerlo, usa la opción -w con un valor variable como se muestra a continuación:

nl -w3 archivo.txt

Usando el comando cat

El comando cat se usa para mostrar el contenido de un archivo, como se ha podido ver en la primera captura de este artículo. Si deseas agregar números a la salida de un archivo, usa -n como se muestra a continuación:

cat -n archivo.txt

Es posible que te pueda interesar pasar la salida estándar a un archivo nuevo. Para hacerlo solo tienes que ejecutar el comando como se muestra a continuación:

cat -n archivo.txt > nuevoarchivo.txt

Usando el comando awk

Este es quizás el método más complejo para el resultado obtenido. Para agregar números de línea a la salida de un archivo usando el comando awk, ejecuta:

awk 'BEGIN{i=1} /.*/{printf "%d.% s\n",i,$0; i++}' archivo.txt

Como se ha visto, he asignado el número inicial como 1 en el parámetro BEGIN. Podremos asignar cualquier otro número inicial a tu elección, por ejemplo 5, como se puede ver a continuación:

awk 'BEGIN{i=5} /.*/{printf "%d.% s\n",i,$0; i++}' archivo.txt

Utiliza el siguiente comando si no quieres tener en cuenta las líneas en blanco:

awk 'BEGIN{i=0} {if($0 !~ /^$/) {printf ("%d.%s \n",i,$0); i++} else { print $0} } ' archivo.txt

Si crees que los comandos anteriores son un poco difíciles de recordar, utiliza el siguiente comando, que te dará el mismo resultado que el primero de los mostrados con el comando AWK:

awk '{ print FNR " " $0 }' archivo.txt

Usando el comando sed

Para agregar el número de línea a una salida estándar de un archivo usando el comando sed, ejecuta:

sed '/./=' archivo.txt | sed '/./N; s/\n/ /'

El comando sed tiene una característica genial que hay que mencionar. Podemos mostrar una línea en concreto de un archivo. Por ejemplo, para mostrar la séptima línea de nuestro archivo, ejecuta:

sed -n 7p archivo.txt

Usando el comando less

Para añadir el número con la salida estándar de un archivo usando less, ejecuta:

less -N archivo.txt

Usando el comando grep

El comando grep se puede utilizar para buscar una línea que contenga un texto específico. Si deseas agregar los números de línea a las líneas que contienen el texto que se busca, ejecuta:

grep -n "línea" archivo.txt

Hay que tener en cuenta que este comando solo agregará los números a las líneas que contienen la cadena de búsqueda. Además, como se ve en la captura, colorea el texto buscado. Todo lo demás en el archivo dado se omitirá.

Y eso es todo, aun que hay que decir que estos comandos tienen otras opciones que pueden complementar o ampliar las que se han descrito en este artículo. Para obtener más información sobre los comandos que aquí se han nombrado, se pueden consultar las páginas man.


Categorías

Ubuntu

Aficionado a la programación y al software. Dispuesto a aprender de todo para después contarlo.

Un comentario

  1.   nadie dijo

    en los comandos de awk no hace falta la busqueda de expresiones regulares “/.*/”
    por defecto ya divide el fichero en lineas y $0 contiene la linea, por lo que

    awk ‘BEGIN{i=1} {printf “%03d: %s\n”,i,$0; i++}’ archivo.txt

    funciona igual (y mejor) que

    awk ‘BEGIN{i=1} /.*/{printf “%d.% s\n”,i,$0; i++}’ archivo.txt

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.