Les Allergies
Alimentaires
Posez votre question Signaler

Shell supprimer chaine de caractere [Résolu]

zil 18Messages postés 25 octobre 2002Date d'inscription 18 février 2010Dernière intervention - Dernière réponse le 30 mars 2009 à 10:36
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...
Lire la suite 

Shell supprimer chaine de caractere »

13 réponses
Réponse
+0
moins plus
Bonsoir

et en mettant <a class="ref" href=* >?
Ajouter un commentaire
Réponse
+0
moins plus
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>

$
;-))
lendi - 30 mars 2009 à 10:01
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?
jipicy- 30 mars 2009 à 10:05
 sed 's/{.*}//'
lendi - 30 mars 2009 à 10:36
merci beaucoup jipicy.
Ajouter un commentaire
Réponse
+0
moins plus
merci
c'est génial et super rapide
bravo

Zil...
Ajouter un commentaire
Réponse
+0
moins plus
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...
jipicy- 3 janv. 2009 à 12:23
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.
Ajouter un commentaire
Réponse
+0
moins plus
bon je crois que
sed 's#wi.*"##'

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

Zil...
jipicy- 3 janv. 2009 à 13:41
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...
Ajouter un commentaire
Réponse
+0
moins plus
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...
jipicy- 3 janv. 2009 à 14:03
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 ;-))
Ajouter un commentaire
Réponse
+0
moins plus
ok, merci j'ai pigé...

Zil...
Ajouter un commentaire
Ce document intitulé « shell supprimer chaine de caractere » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?