Comment puis-je ajouter des nombres au début de chaque ligne d'un fichier?
Par exemple.:
Ceci est Le texte Du fichier.
Devient:
000000001 Il s'agit de 000000002 le texte 000000003 du fichier.
AWK printf, NR
et $0
simplifie le contrôle précis et flexible du formatage:
~ $ awk '{printf("%010d %s\n", NR, $0)}' example.txt
0000000001 This is
0000000002 the text
0000000003 from the file.
N'utilisez pas de chat ou tout autre outil qui n'est pas conçu pour cela. Utilisez le programme:
nl - nombre de lignes de fichiers
Exemple:
nl --number-format=rz --number-width=9 foobar
Parce que nl est fait pour ça ;-)
Vous recherchez la commande 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
demande des chiffres de neuf chiffres; -nrz
demande que les nombres soient formatés justifiés à droite avec un remplissage nul.
cat -n thefile
fera le travail, bien qu'avec les chiffres dans un format légèrement différent.
L'option la plus simple et la plus simple est
awk '{print NR,$0}' file
Voir le commentaire ci-dessus pour savoir pourquoi nl n'est pas vraiment la meilleure option.
Perl -pe 'printf "%09u ", $.' -- example.txt
Voici un script bash qui fera cela également:
#!/bin/bash
counter=0
filename=$1
while read -r line
do
printf "%010d %s" $counter $line
let counter=$counter+1
done < "$filename"