Ajouter texte à la fin d'une ligne

Résolu
Bonjour,
Je voudrai ajouter une chaine à la fin d'une ligne précise dans un fichier texte comme suit :
fichier avant modifications :
aa=ch1,ch2,ch3
bb=ch1,ch2,ch3
cc=ch1,ch2,ch3
dd==ch1,ch2,ch3

exemple :
je voudrais localiser par exemple la ligne "cc=ch1,ch2,ch3" et ajouter la chaine "ch4" à la fin.

cc=ch1,ch2,ch3,ch4

et enfin sauvegarder les modifications dans le fichier.

fichier aprés modifications :
aa=ch1,ch2,ch3
bb=ch1,ch2,ch3
cc=ch1,ch2,ch3,ch4
dd==ch1,ch2,ch3
Configuration: Windows XP
Internet Explorer 7.0

6 réponses

  1. Modérateur
    Salut,
    [tmpfs]$ cat plop
    aa=ch1,ch2,ch3
    bb=ch1,ch2,ch3
    cc=ch1,ch2,ch3
    dd==ch1,ch2,ch3
    
    [tmpfs]$ sed '/cc/ s/.*/&,ch4/' plop
    aa=ch1,ch2,ch3
    bb=ch1,ch2,ch3
    cc=ch1,ch2,ch3,ch4
    dd==ch1,ch2,ch3
    [tmpfs]$ 
    Si tu veux que ce soit permanent rajoute le switch "-i.BAK" à la commande "sed" :
    sed -i.BAK '/cc/ s/.*/&,ch4/' plop
    non seulement le fichier sera modifié mais une sauvegarde sera automatiquement générée.

    ;-))
    3
    1. Modérateur
      Re-

      Pour les variables il faut utiliser des "double-quotes" autour de l'expression :
      sed "/^$var1/ s/.*/&,$var2/" plop 
      ou les intégrées dans l'expression en les excluants :
      sed '/^'"$var1"'/ s/.*/&,'"$var2"'/' plop
      ;-))
      1
      1. Merci je vais l'essayer dans 5min :)
        0
        1. ça marche en mode ligne de commande, mais le problème c quand je veux lui passer des variables, ça ne marche plus!
          var1=cc
          var2=toto
          sed '/^$var1/ s/.*/&,$var2/' plop

          ça ne modifie pas le contenu?!!
          0
          1. Merci bcp pr ton aide, ça marche :)
            0

            Discussions similaires

            question pix mot caché

            7 réponses