Como numerar las líneas de un archivo en la consola Linux

En Tutoriales y Guías por

Linux siempre nos ofrece herramientas para funcionalidades más insospechadas, pero tarde o temprano se presenta su necesidad. En este caso vamos a hablar de la herramienta o comando nl con el que podemos numerar las líneas de un archivo desde la consola Linux.

Como numerar las líneas de un archivo en la consola Linux

Aunque esta funcionalidad parece irrelevante, cuando trabajamos desde la consola o terminal, necesitamos echar mano de esta herramienta. Personalmente lo he usado para trabajar con archivos de texto, archivos CSV, volcados de bases de datos, archivos de configuración, etc.

También debo reconocer que soy un enamorado del editor nano y este por defecto no muestra en pantalla la numeración de las líneas, por lo que en algunas ocasiones he tenido que echar mano del comando nl.

Como numerar las líneas de un archivo desde la consola Linux con el comando nl.

En este primer apartado del tutorial, mostramos el uso más básico del comando nl, que sería el siguiente:
nl vozidea.txt

comando nl numerar lineas en linux

En la imagen vemos que se han numerado todas las líneas excepto aquellas que están en blanco. Puede ser que necesitemos numerar todas las líneas, independientemente de si están vacías o no, para este caso, el comando sería:
nl -b a vozidea.txt

comando nl numerar todas las lineas

Hasta aquí tendríamos lo que podíamos llamar el tutorial de uso básico del comando nl y que cubre las necesidades más básicas. A continuación, daremos cobertura a otras situaciones menos habituales que podemos solventar con esta herramienta.

Numerar las líneas en blanco seguidas como una única línea.

Lo de numerar las líneas en blanco es algo sencillo, pero en ocasiones necesitaremos que si hay varias líneas en blanco seguidas, se contabilice como una única línea. El comando nl es un todoterreno y nos permite solventar este problema ejecutando:
nl -b a -l 2 vozidea.txt

Vemos que en este comando hemos empleado el modificador -l 2, que se encarga de asignar un número de línea cuando encuentre dos líneas en blanco. Si el modificador fuese -l 5, tendría que haber 5 líneas en blanco seguidas para que se contabilizase una línea.

Numerar las líneas con un valor incremental.

Esto que parece algo complejo, en realidad es muy sencillo, consiste en numerar las líneas de forma incremental pero con un valor de salto para cada línea. Para entenderlo mejor, vamos a plantear un ejemplo que consiste en ejecutar el comando:
nl -i 3 vozidea.txt

comando nl numeración incremental

Tal y como vemos en la imagen, se han numerado las líneas pero asignando un valor incremental de 3, es decir, a la primera línea le corresponde el valor 1, a la segunda línea el valor 4 (3+1), a la tercera línea el valor 7 (4+3) y así sucesivamente.

Esta funcionalidad se usa en momentos muy puntuales, pero está bien saber que existe esta posibilidad.

Alineación de la numeración.

Este comando también nos permite jugar con la alineación de la numeración y su formato. Esto puede resultar muy útil cuando vamos a pegar los valores obtenidos en Excel o programas de ofimáticos.

Con nl podemos definir el modificador -n que permite asignar tres tipos de alineación de la numeración:

  • Alineación a la derecha: ln
  • Alineación a la izquierda: rn
  • Alineación derecha con ceros a la izquierda: rz

alinear numeración en comando nl

Dentro de este apartado, también podemos incluir la opción -s que nos permite especificar un separador personalizado para la numeración. Por defecto, el separador es una tabulación, pero para modificarlo podemos ejecutar el siguiente comando: nl -s " -> " vozidea.txt

separador personalizado en comando nl

Como empezar a numerar por un número línea determinado.

En muchas ocasiones vamos a necesitar que la numeración de las líneas comience por un valor diferente a 1. Personalmente me he encontrado muchas situaciones en las que necesito empezar a numerar desde el valor cero. Para conseguir esto, tenemos a nuestra disposición el modificador -v que nos permite establecer el valor de numeración de línea inicial.

Un ejemplo de uso sería: nl -v 0 vozidea.txt

establecer valor inicial de numeración nl

Podemos apreciar que el comando nl es muy flexible y nos ofrece infinidad de posibilidades. Aun así, nos podemos encontrar situaciones que no han quedado recogidas en este tutorial, por ello es recomendable echar un vistazo a la página de ayuda con el comando man nl.

Si te ha quedado alguna duda o simplemente necesitas ampliar la información, puedes usar los comentarios o el foro.