Agregue números al comienzo de cada línea en un archivo

¿Cómo puedo agregar números al comienzo de cada línea en un archivo?

P.ej:

 Esto es
 el texto
 del archivo.

Se convierte en:

 000000001 Esto es
 000000002 el texto
 000000003 del archivo.

AWK’s printf , NR y $0 facilitan el control preciso y flexible del formato:

 ~ $ awk '{printf("%010d %s\n", NR, $0)}' example.txt 0000000001 This is 0000000002 the text 0000000003 from the file. 

No use cat o cualquier otra herramienta que no esté diseñada para hacer eso. Usa el progtwig:

nl – líneas de número de archivos

Ejemplo:

 nl --number-format=rz --number-width=9 foobar 

Porque nl está hecho para eso 😉

Está buscando el comando nl(1) :

 $ nl -nrz -w9 /etc/passwd 000000001 root:x:0:0:root:/root:/bin/bash 000000002 daemon:x:1:1:daemon:/usr/sbin:/bin/sh 000000003 bin:x:2:2:bin:/bin:/bin/sh ... 

-w9 pregunta por números de nueve dígitos de largo; -nrz pide que los números sean formateados justificados a la derecha con relleno cero.

cat -n thefile hará el trabajo, aunque con los números en un formato ligeramente diferente.

 perl -pe 'printf "%09u ", $.' -- example.txt 

Aquí hay un script bash que hará esto también:

 #!/bin/bash counter=0 filename=$1 while read -r line do printf "%010d %s" $counter $line let counter=$counter+1 done < "$filename" 

La opción más sencilla y sencilla es

 awk '{print NR,$0}' file 

Vea el comentario anterior sobre por qué nl no es realmente la mejor opción.