La herramienta nl, parte del paquete coreutils, permite numerar líneas de archivos utilizando diferentes formatos. Este artículo muestra algunos ejemplos de uso.

Anteriormente demostré cómo numerar líneas en la salida con cat. Sin embargo existe una herramienta más avanzada para numerar líneas en la salida y es nl.

A modo de ejemplo, utilizo el archivo /etc/xattr.conf:

emi@hal9000:~$ cat /etc/xattr.conf 
# /etc/xattr.conf
#
# Format:
# <pattern> <action>
#
# Actions:
#   permissions - copy when trying to preserve permissions.
#   skip - do not copy.

system.nfs4_acl			permissions
system.nfs4acl			permissions
system.posix_acl_access		permissions
system.posix_acl_default	permissions
trusted.SGI_ACL_DEFAULT		skip		# xfs specific
trusted.SGI_ACL_FILE		skip		# xfs specific
trusted.SGI_CAP_FILE		skip		# xfs specific
trusted.SGI_DMI_*		skip		# xfs specific
trusted.SGI_MAC_FILE		skip		# xfs specific
xfsroot.*			skip		# xfs specific; obsolete
user.Beagle.*			skip		# ignore Beagle index data
security.evm			skip		# may only be written by kernel

Por defecto se numeran sólo las líneas que no están en blanco:

emi@hal9000:~$ nl /etc/xattr.conf 
     1	# /etc/xattr.conf
     2	#
     3	# Format:
     4	# <pattern> <action>
     5	#
     6	# Actions:
     7	#   permissions - copy when trying to preserve permissions.
     8	#   skip - do not copy.
       
     9	system.nfs4_acl			permissions
    10	system.nfs4acl			permissions
    11	system.posix_acl_access		permissions
    12	system.posix_acl_default	permissions
    13	trusted.SGI_ACL_DEFAULT		skip		# xfs specific
    14	trusted.SGI_ACL_FILE		skip		# xfs specific
    15	trusted.SGI_CAP_FILE		skip		# xfs specific
    16	trusted.SGI_DMI_*		skip		# xfs specific
    17	trusted.SGI_MAC_FILE		skip		# xfs specific
    18	xfsroot.*			skip		# xfs specific; obsolete
    19	user.Beagle.*			skip		# ignore Beagle index data
    20	security.evm			skip		# may only be written by kernel

Para numerar todas las líneas, es necesario emplear la opción -ba:

emi@hal9000:~$ nl -ba /etc/xattr.conf 
     1	# /etc/xattr.conf
     2	#
     3	# Format:
     4	# <pattern> <action>
     5	#
     6	# Actions:
     7	#   permissions - copy when trying to preserve permissions.
     8	#   skip - do not copy.
     9	
    10	system.nfs4_acl			permissions
    11	system.nfs4acl			permissions
    12	system.posix_acl_access		permissions
    13	system.posix_acl_default	permissions
    14	trusted.SGI_ACL_DEFAULT		skip		# xfs specific
    15	trusted.SGI_ACL_FILE		skip		# xfs specific
    16	trusted.SGI_CAP_FILE		skip		# xfs specific
    17	trusted.SGI_DMI_*		skip		# xfs specific
    18	trusted.SGI_MAC_FILE		skip		# xfs specific
    19	xfsroot.*			skip		# xfs specific; obsolete
    20	user.Beagle.*			skip		# ignore Beagle index data
    21	security.evm			skip		# may only be written by kernel

Mediante la opción -i es posible modificar el incremento luego de cada línea (por defecto es 1):

emi@hal9000:~$ nl -i10 /etc/xattr.conf 
     1	# /etc/xattr.conf
    11	#
    21	# Format:
    31	# <pattern> <action>
    41	#
    51	# Actions:
    61	#   permissions - copy when trying to preserve permissions.
    71	#   skip - do not copy.
       
    81	system.nfs4_acl			permissions
    91	system.nfs4acl			permissions
   101	system.posix_acl_access		permissions
   111	system.posix_acl_default	permissions
   121	trusted.SGI_ACL_DEFAULT		skip		# xfs specific
   131	trusted.SGI_ACL_FILE		skip		# xfs specific
   141	trusted.SGI_CAP_FILE		skip		# xfs specific
   151	trusted.SGI_DMI_*		skip		# xfs specific
   161	trusted.SGI_MAC_FILE		skip		# xfs specific
   171	xfsroot.*			skip		# xfs specific; obsolete
   181	user.Beagle.*			skip		# ignore Beagle index data
   191	security.evm			skip		# may only be written by kernel

Si se desea alinear la numeración a izquierda, incluir la opción -nln:

emi@hal9000:~$ nl -ba -nln /etc/xattr.conf 
1     	# /etc/xattr.conf
2     	#
3     	# Format:
4     	# <pattern> <action>
5     	#
6     	# Actions:
7     	#   permissions - copy when trying to preserve permissions.
8     	#   skip - do not copy.
9     	
10    	system.nfs4_acl			permissions
11    	system.nfs4acl			permissions
12    	system.posix_acl_access		permissions
13    	system.posix_acl_default	permissions
14    	trusted.SGI_ACL_DEFAULT		skip		# xfs specific
15    	trusted.SGI_ACL_FILE		skip		# xfs specific
16    	trusted.SGI_CAP_FILE		skip		# xfs specific
17    	trusted.SGI_DMI_*		skip		# xfs specific
18    	trusted.SGI_MAC_FILE		skip		# xfs specific
19    	xfsroot.*			skip		# xfs specific; obsolete
20    	user.Beagle.*			skip		# ignore Beagle index data
21    	security.evm			skip		# may only be written by kernel

También es posible rellenar con ceros, al estilo hexdump con la opción -nrz:

emi@hal9000:~$ nl -ba -nrz /etc/xattr.conf 
000001	# /etc/xattr.conf
000002	#
000003	# Format:
000004	# <pattern> <action>
000005	#
000006	# Actions:
000007	#   permissions - copy when trying to preserve permissions.
000008	#   skip - do not copy.
000009	
000010	system.nfs4_acl			permissions
000011	system.nfs4acl			permissions
000012	system.posix_acl_access		permissions
000013	system.posix_acl_default	permissions
000014	trusted.SGI_ACL_DEFAULT		skip		# xfs specific
000015	trusted.SGI_ACL_FILE		skip		# xfs specific
000016	trusted.SGI_CAP_FILE		skip		# xfs specific
000017	trusted.SGI_DMI_*		skip		# xfs specific
000018	trusted.SGI_MAC_FILE		skip		# xfs specific
000019	xfsroot.*			skip		# xfs specific; obsolete
000020	user.Beagle.*			skip		# ignore Beagle index data
000021	security.evm			skip		# may only be written by kernel

La opción -s permite incluir una cadena que se agrega luego de la numeración, por ejemplo un paréntesis y un espacio en blanco:

emi@hal9000:~$ nl -s') ' /etc/xattr.conf 
     1) # /etc/xattr.conf
     2) #
     3) # Format:
     4) # <pattern> <action>
     5) #
     6) # Actions:
     7) #   permissions - copy when trying to preserve permissions.
     8) #   skip - do not copy.
        
     9) system.nfs4_acl			permissions
    10) system.nfs4acl			permissions
    11) system.posix_acl_access		permissions
    12) system.posix_acl_default	permissions
    13) trusted.SGI_ACL_DEFAULT		skip		# xfs specific
    14) trusted.SGI_ACL_FILE		skip		# xfs specific
    15) trusted.SGI_CAP_FILE		skip		# xfs specific
    16) trusted.SGI_DMI_*		skip		# xfs specific
    17) trusted.SGI_MAC_FILE		skip		# xfs specific
    18) xfsroot.*			skip		# xfs specific; obsolete
    19) user.Beagle.*			skip		# ignore Beagle index data
    20) security.evm			skip		# may only be written by kernel

Para más información, consultar la página de manual de nl:

man nl

Compartí este artículo