Todo lo que debes saber sobre el comando nl

Qué es el comando nl en Linux y para qué sirve. [tutorial para novatos]

Linux es un sistema operativo que ya de por sí viene cargadito de herramientas, y que desde los repositorios le puedes poner cientos más para el procesado de textos. Incluso en Windows, con WSL puedes necesitar este manual básico de cómo usar nl en la consola de Linux.

El comando nl es una herramienta que permite numerar las líneas de un archivo. Ese es su funcionamiento básico, pero esconde más de una opción interesante que seguramente te vendrá de cine para cuando estés, por ejemplo, buscando algún bug en una línea determinada.

Tutorial básico del comando nl en Linux

Como ya he dicho, el comando se ejecuta escribiendo simplemente nl y el nombre del fichero a numerar las líneas:

nl [OPTION]... [FILE]...

En cuanto a la ayuda, nos deja un mensaje como este, pero aun así veremos unos ejemplos más abajo para entenderlo mejor:

#  nl --help
Modo de empleo: nl [OPCIÓN]... [FICHERO]...
Write each FILE to standard output, with line numbers added.

Sin FICHERO, o cuando FICHERO es -, lee la entrada estándar.

Los argumentos obligatorios para las opciones largas son también obligatorios
para las opciones cortas.
 -b, --body-numbering=ESTILO   usa ESTILO para la numeración de las líneas
 -d, --section-delimiter=CC    usa CC para separar páginas
[...]

Cómo usar el comando nl

El uso básico pasa simplemente por ejecutar nl sin meter ningún parámetro mas que el nombre del archivo (tura absoluta o relativa a donde estés), y devolverá algo como lo siguiente:

#  nl archivo1
    1 hola
    2 me
    3 llamo

    4 vichaunter
    5 y
    6 esto
    7 es

    8 una
    9 prueba
   10 para
   11 nl

Cómo numerar las líneas vacías con nl

El comando anterior tiene un pequeño problema, y es que si tenemos líneas en blanco, no se numerarán aunque sí que aparecen los saltos extra en la salida (de ahí que el resultado anterior tenga líneas de serparación entre la 3 y 4 y la 7 y 8.

Léete también  Cómo activar orígenes desconocidos en cualquier Android

Para contar también las líneas vacías en la numeración, bastará con pasarle el valor a a la opción -b:

#  nl -b a archivo1
    1 hola
    2 me
    3 llamo
    4
    5 vichaunter
    6 y
    7 esto
    8 es
    9
   10 una
   11 prueba
   12 para
   13 nl

Como ves, esta vez sí que ha contado las líneas en blanco.

Cómo configurar el valor incremental con el comando nl (o de conteo)

Esta opción se usa raras veces, pero aun así es bueno saber que está disponible. Es posible hacer que los saltos entre números sean en cantidades diferentes, por ejemplo que cuente de 3 en 3 con el comando -i:

#  nl -i 3 archivo1
    1 hola
    4 me
    7 llamo
   10 vichaunter
   13 y
   16 esto
   19 es
   22 una
   25 prueba
   28 para
   31 nl

Como puedes ver los saltos han cambiado, pero ten en cuenta que siempre empezarán por 1 (siempre puedes añadir una línea en blanco al principio si los necesitas por alguna razón.

Cómo contar varias líneas en blanco como una sola con nl

Si has probado a contar las líneas en blanco con nl, y tenías varias seguidas, te habrás dado cuenta de que cada una cuenta como una línea entera. A veces puedes querer contarlas como un único espacio en blanco, y esto se hace con el comando -l.

Solo hay que pasarle el número máximo de líneas a considerar como una sola, por ejemplo 5 líneas en blanco:

#  nl -b a -l 5 archivo1
    1 hola
    2 me
    3 llamo




    4




    5
    6 vichaunter
    7 y
    8 esto
    9 es
   10 una
   11 prueba
   12 para
   13 nl

Como puedes ver las 10 líneas en blanco que hay se han contado de 5 en 5, y recuerda que el incremento sigue la numeración normal que hayas configurado.

Léete también  Como convertir archivos tar.xz a tar.gz para Proxmox

Cómo dar formato a los números con el comando nl

El comando nl te permite configurar cómo se tienen que ver los números en la pantalla, esto incluye la opción -n con estas posibilidades:

  • ln: alinear a la izquierda
  • rn: alinear a la derecha
  • rz: alinear a la derecha con ceros a la izquierda (muy útil por ejemplo si lo vamos a exportar como una lista ordenada)
#  nl -n ln archivo1
1       hola
2       me
3       llamo
4       vichaunter
5       y
6       esto
7       es
8       una
9       prueba
10      para
11      nl

 

#  nl -n rn archivo1
    1 hola
    2 me
    3 llamo
    4 vichaunter
    5 y
    6 esto
    7 es
    8 una
    9 prueba
   10 para
   11 nl

 

#  nl -n rz archivo1
000001  hola
000002  me
000003  llamo
000004  vichaunter
000005  y
000006  esto
000007  es
000008  una
000009  prueba
000010  para
000011  nl

Cómo usar un separador personalizado en el comando nl

El separador para este comando, son los espacios que hay entre el número y la línea a la hora de mostrarlo. De forma predeterminada son dos espacios pero puedes modificarlo con el comando -s seguido del separador que quieras:

#  nl -s "-->" archivo1
    1-->hola
    2-->me
    3-->llamo
    4-->vichaunter
    5-->y
    6-->esto
    7-->es
    8-->una
    9-->prueba
   10-->para
   11-->nl

Puedes por ejemplo poner ::, __, –, o cualquier otra cosa que necesites para interpretar después los datos.

Cómo empezar con un número de línea diferente en el comando nl

Antes comentaba que podías meter una línea en blanco para saltarte un número en la correlación, pero nl ofrece también una opción que permite configurar el primer número de línea, por ejemplo si quieres saltar de 3 en 3 y empezar por el 22, bastaría con usar la opción -v:

#  nl -v 22 -i 3 archivo1
   22 hola
   25 me
   28 llamo
   31 vichaunter
   34 y
   37 esto
   40 es
   43 una
   46 prueba
   49 para
   52 nl

Como ves es igual que antes pero empezando por el número que elijas.

Léete también  Como ejecutar multiples updates con Php en una única consulta MySQL

Conclusión

Este comando es bastante fácil de usar, y puede ser muy versátil para determinadas tareas. Además debes tener en cuenta que todas las opciones se pueden combinar entre sí de la forma que mejor te convenga.

No hay un límite de opciones, y si lo combinas con otros comandos puedes sacarle incluso más partido.

¿Necesitabas numerar líneas en archivos? ¿Cual es el objetivo? Comenta y comparte


AYUDANOS a poder seguir dando respuestas. Te podemos echar una mano y tú también a nosotros, símplemente dale a me gusta.