Comment puis-je ajouter un numéro de ligne et une tabulation au début de 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?
Réponses:
awk '{printf "%d\t%s\n", NR, $0}' < filename
awk '{print NR, "\t", $0}'
.
nl
est également FAUX. Dans le code source, il ne vous donnera jamais les bons numéros de ligne, car il ne compte pas les lignes contenant uniquement des espaces.
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$.
nl
d’omettre l’espace avant le nombre. Utilisez simplement cette -w1
option pour lui indiquer que la largeur minimale d’un nombre est 1.
-nln
vous pouvez justifier à gauche si vous ne voulez pas d'espace avant les numéros de ligne. En outre, pour spécifier un séparateur de tabulation, vous pouvez utiliser -s$'\t'
ou -s' '
(insérer une tabulation entre guillemets simples avec ctrl+v
then tab
).
nl -w1
(d'après GNU coreutils 8.24) ne tronque pas les numéros de ligne.
sed = test.txt | sed 'N;s/\n/\t/'
La commande "sed =" affichera le numéro de ligne suivi d'un retour à la ligne puis 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.
\n
s’agit d’un saut de ligne (communément appelé simplement "nouvelle ligne", car sa première utilisation répandue a été sous Unix) et \r
correspond à un retour chariot. Windows utilise \r\n
(également appelé CRLF
).
Que diriez-vous
cat -n somefile.txt
?
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 fonctionne complètement dans votre shell et n'exécute pas de programme!
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 =====> ----
sed file.txt -e 's/^/\t/' | cat -n | sed -e 's/^\t//'
ou pour certains non-GNU sed
:
cat file.txt | sed -e 's/^/\\t/' | cat -n | sed -e 's/^\\t//'