Commande unix/linux

Résolu
DRSBMM -  
 DRSBMM -
Bonjour,
je veux savoir une commande qui permet de substitué à chaque ligne dans un fichier une mot par une autre par ex:"ancienne" par "nouvelle"
!!seulement l'avant dernier occurance ?
svp,aidez moi......
Configuration: Windows XP
Internet Explorer 7.0

2 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,
    jp@MDK:~ ssh$ cat fichier
    Je suis très ancienne, plus ancienne que l'ancienne qui était déjà très ancienne.
    En tant qu'ancienne, et présidente des anciennes élèves, je suis l'ancienne.
    L'ancienne, ancienne, très ancienne et même ancienne.
    
    jp@MDK:~ ssh$ sed 's/\(.*\)ancienne\(.*ancienne\)/\1nouvelle\2/' fichier
    Je suis très ancienne, plus ancienne que l'nouvelle qui était déjà très ancienne.
    En tant qu'ancienne, et présidente des nouvelles élèves, je suis l'ancienne.
    L'ancienne, ancienne, très nouvelle et même ancienne.
    
    jp@MDK:~ ssh$
    ;-)
    0
    1. DRSBMM
       
      merci,je vais essayer votre proposition.
      0
    2. DRSBMM
       
      vous pouvez m'expliquez cette commande surtout la partie "\1nouvelle\2/"
      SVP
      0
      1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898 > DRSBMM
         
        s/
        Commande de substitution et son délimiteur /

        \(.*\)
        Sous-expression (la 1ère) matchant le motif représenté à l'intérieur des parenthèses. Ici le .* englobe un maximum de caractères, en fait jusqu'à ce qu'il rencontre le motif suivant en étant le plus gourmand possible.

        ancienne
        Motif à remplacer.

        \(.*ancienne\)
        Seconde sous-expression, matchant le dernier motif sur la ligne contenant "ancienne" et tout ce qui le précède.

        /
        Délimiteur de la commande "s" de substitution entre le motif à substituer et la chaine de remplacement.

        \1
        Référence arrière, correspondant à la 1ère sous-expression. Donc on demande à remettre tout ce qui lui correspond

        nouvelle
        Le motif de remplacement à substituer à "ancienne"

        \2
        Référence arrière, correspondant à la 2ème sous-expression.

        /
        Délimiteur de fin



        Pour reprendre en exemple la 1ère ligne du fichier "fichier" de l'exemple, la 1ère sous expression correspond à :

        Je suis très ancienne, plus ancienne que l'

        suivie du motif "ancienne" :

        ancienne

        et pour finir la 2nd sous-expression correspond à (avec l'espace devant y compris) :

        qui était déjà très ancienne.


        ;-))
        0
  2. DRSBMM
     
    merci,tu m'a aidé beaucoup,et grace à tes conseils j'ai compris tous,merci encore une fois.
    0