web-dev-qa-db-fra.com

Comment ajouter un numéro de ligne et une tabulation à chaque ligne d'un fichier texte?

Comment puis-je ajouter un numéro de ligne et une tabulation au début de chaque ligne d'un fichier texte?

44
Richard Hoskins
awk '{printf "%d\t%s\n", NR, $0}' < filename
50
pgs

La commande nl devrait le faire, mais elle ajoute également un espace avant le numéro de ligne. Cela fait partie de Linux coreutils.

nl lines.txt
 1  $bkWTN
 2  $cV8$.
52
ACoolie
sed = test.txt | sed 'N;s/\n/\t/'

La commande "sed =" affichera le numéro de la ligne suivi du retour chariot et de la ligne suivante.

L'expression "N; s/\ n/\ t /" prendra chaque ligne, obtiendra la ligne suivante (c'est-à-dire le numéro de ligne et la ligne) et remplacera le retour chariot par une tabulation.

10
Callum
cat -n <yourfile> | Perl -pe "s/^\s*(\d+)\s+/\1\t/"

cat -n ajoute linumbers en tant que "123 linecontents" et que l'expression rationnelle le modifie en "linumberTABlinecontents"

4
raspi
Perl -pe "s/^/$.\t$_/" file.txt

ou

Perl -ne "print qq($.\t$_)" file.txt
3
itsadok

OK, voici une solution bash sur une ligne:

$ IFS=$'\n';x=1;for l in $(<file.txt);do echo -e "$x\t$l";((x+=1));done
$ IFS=

Le premier paramètre IFS indique à bash de lire une ligne complète à la fois. La deuxième ligne réinitialise l'IFS par défaut.

En prime, il tourne complètement dans votre shell et n'exécute pas de programme!

2
P. Heffner

Que diriez-vous

cat -n somefile.txt

?

2
innaM

Ok, puisque nous recueillons des moyens de le faire,

 grep -n . file.txt | sed 's/\(^[0-9]*\):/\1    /g'
 # this is a tab with Ctrl-V + Tab  =====>  ---- 
1
nik
sed file.txt -e 's/^/\t/' | cat -n | sed -e 's/^\t//'

ou pour certains seds non-GNU:

cat file.txt | sed -e 's/^/\\t/' | cat -n | sed -e 's/^\\t//'
1
chaos