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. 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. 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 bcp pr ton aide, ça marche :)
            0