1
votes

Comment ajouter "/ 1 /" comme numéro de ligne dans un fichier txt?

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


0 commentaires

5 Réponses :


1
votes
awk '{print "/" FNR "/ " $0}' file

0 commentaires

1
votes

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


1 commentaires

Ce sed pourrait être plus lisible avec -E : sed -E 's | ^ ([0-9] *) * | / \ 1 / |'



1
votes

Une solution sed est:

   sed '=' file | sed 'N;s_^_/_;s_\n_/ _'

On a besoin d'un tube | ici à cause des limitations du = commande.


0 commentaires

1
votes

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


2 commentaires

Je ne sais pas si le second est soigné ou horrible;)


@StephenDarlington je crois que c'est ce dernier :)



0
votes

Solution Perl

$ cat  add_line_num.txt
Tony
Alpha
Bravo

$ perl -pe ' $_="/$./ $_" ' add_line_num.txt
/1/ Tony
/2/ Alpha
/3/ Bravo


0 commentaires