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...
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
-
Bonsoir
et en mettant <a class="ref" href=* >? -
ModérateurSalut,
$ 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> $
;-))
-
merci
c'est génial et super rapide
bravo
Zil... -
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...-
ModérateurRe-
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.
-
-
bon je crois que
sed 's#wi.*"##'
fait l'affaire
mais je n'ai pas compris [^>] dans l'expression de jipicy
Zil...-
Modérateurmais 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...
-
-
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... -
ok, merci j'ai pigé...
Zil...