Shell supprimer chaine de caractere

Résolu
Bonjour à tous

c'est pour un script shell dans linux

soit une ligne d'un fichier texte:

<td class="cell"><a class="ref" href="/adresse/ljfio15" ><strong>1</strong></a></td>

je cherche à enlever la partie <a class="ref" href="/adresse/ljfio15">

j'ai essayé avec le commande cut mais le probleme est que l'adresse "/adresse/ljfio15" n'est pas toujours la meme, la longueur peut varier

est il possible de lui dire de tout enlever entre < et > ???

merci
Zil...
Configuration: Linux
Firefox 3.0.5

7 réponses

  1. Bonsoir

    et en mettant <a class="ref" href=* >?
    0
    1. Modérateur
      Salut,
      $ var='<td class="cell"><a class="ref" href="/adresse/ljfio15" ><strong>1</strong></a></td>'
      
      $ echo $var | sed 's#<a [^>]*>##'
      <td class="cell"><strong>1</strong></a></td>
      
      $
      ;-))
      0
      1. Salut,

        j'essaie d'adapter la solution à mon problème sans succès, je cherche à supprimer une expression se trouvant entre des accolades, les accolades y compris.
        j'ai fait ça: sed 's#/{ [^}]*/}##'
        mais ça ne fonctionne pas.

        des idées?
        0
      2. Modérateur
        @lendi
         sed 's/{.*}//'
        0
      3. @jipicymerci beaucoup jipicy.
        0
    2. merci
      c'est génial et super rapide
      bravo

      Zil...
      0
      1. Salut
        bon et maintenant je veux virer width="10%" d'une chaine

        j'ai esayé sed 's#wi [^"]*>##'

        mais ca ne marche pas donc je n'ai rien compris à Sed

        puis je avoir une petite explication

        merci
        Zil...
        0
        1. Modérateur
          Re-

          La syntaxe donnée plus haut n'est pas générique (du moins pas dans sa totalité), mais adaptée au cas présenté.

          Il faut adapter la regex (expression régulière) à chaque cas...

          Voir dans la FAQ : http://www.commentcamarche.net/faq/478 sed

          Ensuite concernant le 'width="10%"', il faut savoir si c'est un cas isolé ou non, s'il le pourcentage risque de changer, s'il est tout seul sur la ligne, etc.
          0
      2. bon je crois que
        sed 's#wi.*"##'

        fait l'affaire
        mais je n'ai pas compris [^>] dans l'expression de jipicy

        Zil...
        0
        1. Modérateur
          mais je n'ai pas compris [^>] dans l'expression
          Les expressions régulières sont très gourmandes, et de ce fait pour reprendre l'expression ci-dessus :

          sed 's#<a [^>]*>##'

          si l'on avait écrit :

          sed 's#<a .*>##'

          le '.*>' aurait englobé tout ce qui suit le '<a ' jusqu'au dernier ">" rencontré sur la ligne. Donc il faut clairement signifier que l'on veut tout jusqu'au prochain ">" mais sans ">" à l'intérieur...
          0
      3. Ok, j'ai dejà regardé la FAQ mais je n'avais pas trouvé où ils en parlaient

        mon expression fonctionne dans la console masi pas dans un script shell

        sinon l'exression est seule sur la ligne, le % peut varier et il y en a plein dans le fichier

        Merci en tout cas

        Zil...
        0
        1. Modérateur
          mon expression fonctionne dans la console masi pas dans un script shell
          Il faut nous afficher le script et l'erreur qui se produit, on n'est pas devin ;-))
          0
      4. ok, merci j'ai pigé...

        Zil...
        0