Sous Unix, je veux ajouter une barre oblique avant et après le numéro de ligne dans un fichier .txt
cette commande n'affiche que les numéros de ligne cat -n txt.fichier
ceci :
/1/ Tony /2/ Alpha /3/ Bravo
à ceci:
Tony Alpha Bravo
5 Réponses :
awk '{print "/" FNR "/ " $0}' file
awk est probablement l'option la plus propre , mais vous pouvez également utiliser la commande nl
:
nl -a -n ln txt.file | sed 's/^\([0-9]*\) */\/\1\//'
(Les barres obliques autour du numéro de ligne - question de devoir? - le complique. La commande sed ajoute les barres obliques. Vous devrez peut-être le modifier légèrement en fonction de votre version d'Unix. I fait cela sur un Mac.)
Ce sed
pourrait être plus lisible avec -E
: sed -E 's | ^ ([0-9] *) * | / \ 1 / |'
Une solution sed
est:
sed '=' file | sed 'N;s_^_/_;s_\n_/ _'
On a besoin d'un tube |
ici à cause des limitations du = commande.
Pour lancer une solution bash
(lente comme prévu):
paste -d" " <(seq -f "/%g/" 1 $(wc -l < file.txt)) file.txt
Ou d'une manière étrange mais "créative" (étonnamment c'est relativement rapide):
while IFS= read -r line; do printf '/%d/ %s\n' "$((++i))" "$line"; done < file.txt
Je ne sais pas si le second est soigné ou horrible;)
@StephenDarlington je crois que c'est ce dernier :)
Solution Perl
$ cat add_line_num.txt Tony Alpha Bravo $ perl -pe ' $_="/$./ $_" ' add_line_num.txt /1/ Tony /2/ Alpha /3/ Bravo