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