Numéroter un texte avec script shell

pato1989 -  
dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je souhaite numéroter afficher le contenue d'un fichier texte
de manière de créer un script équivalent à la commande "cat -n fic.txt"
j'ai essayé ce code mais ça marche pas

echo donner le nom de fichier
read a
i=0
echo $i
b=cat $a|wc -l
while [ i le $b ]
do
i=$(($i+1))
echo $i
head -$i $a|tail -1
done


1 réponse

  1. ste90
     
    Bonjour,

    Je vous propose cette solution :

    #! /bin/bash
    
    cpt=1
    while read line
    do
            echo $line | sed "s/${line}/     ${cpt}  ${line}/"
            (( cpt++ ))
    done < toto.txt
    


    Voici le résultat :
    1  TEST FILE
    2  HELLO
    3  WORLD
    


    On remplace tout simplement la ligne par le numéro + la ligne grâce à la commande sed. On incrémente le numéro de ligne dans la boucle de lecture.
    1
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Salut,

      sed "s/^/ ${cpt}  /" <<<"${line}"
      Sera tout aussi bien en lieu et place de la ligne 6 ;-))
      0
    2. gnugo Messages postés 153 Date d'inscription   Statut Membre Dernière intervention   46
       
      Je ne réponds pas à la question mais si "cat -n fic.txt" le fait, pourquoi chercher à le faire autrement ?

      là on remplace un appel à cat par des appels à sed je vois pas l'intérêt. Et ton exemple fait encore plus d'appels : wc, head, tail et même cat


      #!/bin/bash
      cat -n fic.txt
      0
    3. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Je n'ai corrigé que la syntaxe sed pour la forme, mais il est vrai qu'un simple :
      echo  "${cpt} ${line}"
      est largement suffisant et fait largement le boulot ;-\
      0
    4. ste90
       
      C'est vrai merci pour la correction ;)

      Je ne vois pas non plus l'intérêt de remplacer une commande système par un script mais bon ... Peut être un exercice ....
      0
    5. gnugo Messages postés 153 Date d'inscription   Statut Membre Dernière intervention   46
       
      Bah si on réécrit la commande même en partie, dans ce cas l'appel à d'autres commandes hormis celles de base de bash devraient être interdites ! Sinon #!/bin/bash
      cat -n fic.txt est correct
      0