Commande sed

Résolu
Bonjour,
Je veux modifier la balise name qui est juste aprés la balise <b>

fichier en entée :
<a>
<name = toto>
<b>
<name = titi>

fichier en sortie :

<a>
<name = toto>
<b>
<nom = titi>
Configuration: Windows XP
Internet Explorer 7.0

23 réponses

  1. Modérateur
    T'es sûr ?
    jp@MDK:~/tmpfs ssh$ cat plop
    <a>
    <name = toto>
    <b>
    <name = titi>
    
    jp@MDK:~/tmpfs ssh$ sed '/<b>/{n;s/name/nom/}' plop
    <a>
    <name = toto>
    <b>
    <nom = titi>
    
    jp@MDK:~/tmpfs ssh$
    ;-))
    1. Modérateur
      Essaies sans les chevrons :
      sed '/b/{n;s/name/nom/}'
      ou en les protégeant :
      sed '/\<b\>/{n;s/name/nom/}'
      ;-)
      1. Modérateur
        Quelle version de "sed" ? (sed --version)

        Tu essaies sur un exemple comme celui que tu m'as donné ou sur un autre fichier ? Si c'est le cas (autre fichier) affiche moi-le ici s'il te plaît.
        1. Bonjour jipicy,
          non, j'essaie sur le même fichier :)
          la bonne nouvelle, c'est que je suis arrivé à le faire autrement : sed '3,4 s/name/nom/'
          Merci encore :)
          1. Modérateur
            la bonne nouvelle, c'est que je suis arrivé à le faire autrement
            Ben c'est le principal ;-))
            1. Non, je t'assure que tu l'es :) t'es réactif aux questions posées et c'est le genre de personne dont on a besoin au niveau des forums ;)
              1. Modérateur
                ;-))

                Tiens, tu peux essayer ça s'il te plaît (normalement "ed" doit être installé nativement) :
                ed -s fichier <<< $'/b/ +1 s/name/nom/\n,p'
                et si ça marche essaie derrière :
                ed -s fichier <<< $'/b/ +1 s/name/nom/\nw'
                Merci ;-)
                • 1
                • 2