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.
El artículo Agregar números de línea a la salida estándar de archivos de texto en la terminal ha sido originalmente publicado en Ubunlog.