Mostrar un fichero con las líneas numeradas con nl
Para mostrar un fichero con las líneas numeradas podemos usar cat, pero tenemos otro comando que también permite hacer esa misma función y cuenta con más opciones. Su uso más básico, que es escribir el comando e indicarle el fichero a mostrar únicamente numerará las líneas con contenido, no numerando las líneas vacías:
nl fichero
Modificadores en nl
Para activar las opciones de nl tiene un curioso sistema de modificadores, ya que debemos escribir el modificador con un guión delante, como en casi todos los comandos, pero con el estilo anexado. Por ejemplo, para modificar la forma de numerar las líneas, está el modificador -b, pero con:
nl -b fichero
Nos dará el siguiente error:
nl: estilo de numeración de cuerpo inválido: «fichero» Pruebe 'nl --help' para más información.
Por lo que tendremos que indicarle un estilo, a elegir entre los siguientes:
- a -> numera todas las líneas
- t -> numera sólo las líneas no vacías
- n -> no numera las líneas
- pERB -> numera sólo las líneas que contienen esa expresión regular básica
Como numerar sólo las líneas no vacías es el comportamiento por defecto de nl y para no numerar las líneas usaremos cat que es más cómodo, nos centraremos en las otras dos opciones, cómo numerar todas las líneas y cómo numerar las líneas que contengan cierta expresión.
Numerar todas las líneas
Para numerar todas las líneas tenemos que usar el modificador -b seguido del estilo a, por lo que tendremos que unir esa «a» con la «b», quedando así:
nl -ba fichero
El resultado que devuelve es igual a:
cat -n fichero
Numerar las líneas que contengan determinado patrón
Para numerar las líneas que cumplan una expresión regular básica, usaremos el modificador -b, seguido de p y la expresión regular a buscar. Por ejemplo, si queremos numerar las líneas que contienen el símbolo #, lo haremos con:
nl -bp# fichero
Y si queremos numerar las líneas que comiencen por #, le añadiremos ^ delante para indicar que queremos que muestre sólo las líneas que comienzan por ese patrón:
nl -bp^# fichero
Si lo que queremos es indicar el carácter de final de línea para que numere únicamente esas líneas, añadiremos un $ detrás del patrón, por lo que si queremos que numere sólo las líneas acabadas en #, escribiremos:
nl -bp#$ fichero
Para que numere sólo las líneas que no contienen nada, indicaremos el comienzo con ^ seguido del final con $ y nada entre el comienzo y el final:
nl -bp^$ fichero
No aumentar la numeración de uno en uno
Si queremos que la numeración de las líneas no aumente de uno en uno, sino de X en X, usaremos el modificador -i seguido de X. Así pues, si queremos que numere de 10 en 10 (1, 11, 21, 31…), escribiremos:
nl -i10 fichero
Y si queremos que numere todas las líneas, incluso las vacías, usaremos:
nl -ba -i10 fichero
Separar los números de las líneas
Otro curioso modificador de nl es el modificador -n, que modifica el formato de numeración, con estos tres formatos:
- ln -> alinea a la izquierda la numeración, dejando las unidades a sólo los caracteres en blanco del contenido de las líneas (formato por defecto)
- rn -> alinea a la derecha la numeración, separando las unidades del contenido de las líneas siete caracteres
- rz -> numera con seis dígitos alineando a la derecha y escribiendo tantos ceros como sea necesario hasta llegar a los seis dígitos
Así, si queremos dejar más espacio del que muestra por defecto entre los números y el contenido de las líneas, usaremos:
nl -nln fichero
Rellenar con ceros la numeración
Si queremos rellenar con ceros hasta los seis dígitos, escribiremos:
nl -nrz fichero
Y si queremos que en lugar de los seis dígitos por defecto, numere con otra cantidad distinta de dígitos, usaremos el modificador -w seguido del número de dígitos a mostrar. Por ejemplo, si queremos que rellene con ceros hasta los tres dígitos, escribiremos:
nl -nrz -w3 fichero
Pingback: Numerar las líneas que muestra cat – Linux en Español