web-dev-qa-db-fra.com

Ajouter des nombres au début de chaque ligne d'un fichier

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

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.
33
Raymond Hettinger

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 ;-)

105
tamasgal

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.

31
sarnold

cat -n thefile fera le travail, bien qu'avec les chiffres dans un format légèrement différent.

15
duskwuff

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.

4
egorulz
Perl -pe 'printf "%09u ", $.' -- example.txt
3
Peter John Acklam

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"
3
slashdottir