|
Publicité | ||||||||||||||||||||||
|
|
#1 |
|
Membre à l'essai
![]() Inscription : janvier 2006 Messages : 79 ![]() |
Bonjour,
J'ai un fichier qui contient des lignes du style Code :
<a href=url1>lien1</a> blablabla intermédiaire 1 <a href=url2>lien2</a> blablabla intermédiaire 2 <a href=url3>lien3</a> blablabla... Je veux effacer tous les <a href....> et les </a> Je commence par effacer les <a href....> Mais si je fais Code :
sed 's/<a href.*>//g' fichier1 > fichier2 Je ne trouve pas la solution tout seul. Ça ne doit pourtant pas être très compliqué. Cordialement Dernière modification par laloupiote ; 28/02/2010 à 15h44. |
|
|
00
|
|
|
#2 |
|
Membre chevronné
![]() Inscription : septembre 2007 Messages : 685 ![]() |
Bonjour,
Je ne connais pas bien sed et je n'ai pas beaucoup de temps maintenant. Mais je peux te dire où il y a un problème. La chaîne à substituer commence par "<a href", puis elle continue par des caractère quelconques sauf la suite "a>" et se termine par "a>". Je n'arrive pas à exprimer ce que j'ai écrit en bleu. Quelque chose comme ([^a][^>])*, mais les parenthèses ne regroupent pas le pattern pour l'étoile suivante. Une idée dans l'assistance?
__________________
Un problème bien posé est déjà résolu (H. Bergson). |
|
|
00
|
|
|
#3 |
|
Membre à l'essai
![]() Inscription : janvier 2006 Messages : 79 ![]() |
Merci pour ta réponse, mais je pense que le problème concerne directement sed. En fait, sed lit les expressions rationnelles et je crois que c'est là finalement qu'il faut chercher.
Comment formuler, dans une expression rationnelle, que je veux sélectioner (pour suppression par sed) la chaîne <a href ....> et que cette chaîne s'arrête au premier > et non pas au dernier ? Il y aurait une solution, mais je cherche plus "élégant" ce serait, dans un premier temps remplacer les </a> par un saut de ligne Code :
sed 's/<\/a>/\n/g' fichier1 > fichier2 Code :
sed 's/<a href.*>//' fichier2 > fichier3 Dernière modification par laloupiote ; 28/02/2010 à 15h44. |
|
|
00
|
|
|
#5 |
|
Membre à l'essai
![]() Inscription : janvier 2006 Messages : 79 ![]() |
Je n'ai pas bien compris, mais ça ne fonctionne pas : mes <a href ...> sont toujours là.
Pour progresser est-ce que le [^>] signifirait qu'il s'agit du premier > qu'il faut prendre en compte ? Et alors, ne faudrait-il pas ajouter .* entre href et [^>] ? Code :
sed 's/<a href[^>]*>//g; s/<\/a>//g' fichier |
|
|
00
|
|
|
#6 | ||||
|
Expert Confirmé
![]() Inscription : février 2008 Messages : 1 897 ![]() |
Citation:
Citation:
Code :
|
||||
|
|
00
|
|
|
#7 |
|
Membre chevronné
![]() Inscription : septembre 2007 Messages : 685 ![]() |
J'ai ceci qui marche chez oim:
__________________
Un problème bien posé est déjà résolu (H. Bergson). |
|
|
00
|
|
|
#8 | |
|
Expert Confirmé
![]() Inscription : février 2008 Messages : 1 897 ![]() |
Citation:
|
|
|
|
00
|
|
|
#9 |
|
Membre chevronné
![]() Inscription : septembre 2007 Messages : 685 ![]() |
Laloupiote, peux-tu nous éclairer? Ha, ça y est, je l'ai faite. Désolé, ça me démangeait depuis un moment.
Je n'avais pas compris la même chose. Il est vrai qu'un exemple complet aurait été parfait (ligne avant, ligne après).
__________________
Un problème bien posé est déjà résolu (H. Bergson). |
|
|
00
|
|
|
#10 | |
|
Membre à l'essai
![]() Inscription : janvier 2006 Messages : 79 ![]() |
Je suis navré de vous avoir laissé tombés comme cela, mais pour des raisons indépendantes de ma volonté (santé, mais ça va mieux, merci
Citation:
Toutes mes excuses également à N_Bah, parce que la formule qu'il m'a proposée fonctionne bien, mais c'est moi qui n'ai pas su l'adapter correctement du premier coup (je n'avais pas vu, mais il y avait quelques caractères avant href. On va mettre ça sur le compte de mes ennuis Mon problème est donc résolu, mais je n'ai pas compris comment. J'avais compris que pour indiquer une série de caractères quelconques, il fallait le coder ".*" et que les crochets permettaient de rechercher les caractères qu'ils contiennent. Auriez-vous des explications ou un lien qui me permette de mieux comprendre ? Avec mes excuses renouvellées, Bien cordialement, |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com