#1 Le 24/11/2007, à 16:46
- TheSponge
[sed] Recuperer url pour y ajouter balises
Bonjour,
Je viens de passer quelques heures à chercher comment faire ce que je veux mais je n'y arrive pas ! C'est désespérant. J'espère que vous pourrez m'aider.
Savez-vous comment faire pour que je puisse récupérer une url qui est au milieu d'un texte et y ajouter, de chaque cà´té, une balise, sans modifier le texte bien sûr ?
Ex :
Bonjour, je suis Bob. Mon site http://site.de.bob.fr est vraiment fantastique !
Doit devenir :
Bonjour, je suis Bob. Mon site <lien>http://site.de.bob.fr</lien> est vraiment fantastique !
Est-ce qu'une personne peut m'aider à faire ça ? J'ai pensé à sed mais s'il y a autre chose plus adapté n'hésitez pas à m'en informer
Merci,
Nicolas
#2 Le 24/11/2007, à 18:09
- TheSponge
Re : [sed] Recuperer url pour y ajouter balises
AHHHHHHH !!!! Quel boulet je fait !
Il faut utiliser & qui correspond à la chaîne qui est matché, dans son ensemble, et non pas \1 , etc qui ne représente qu'une partie. Cela pourra peut-être servir à d'autres étourdis
#3 Le 24/11/2007, à 18:19
- BlaireauOne
Re : [sed] Recuperer url pour y ajouter balises
sed 's#\(http:[^ ]\+\)#<lien>\1</lien>#' texte.txt
Bonjour, je suis Bob. Mon site <lien>http://site.de.bob.fr</lien> est vraiment fantastique !
Explication :
http://www.shellunix.com/regexp.html
Remplace toute chaà®ne de caractères http: suivie de 1 à n caractères différents de 'blanc' par cette "regexp" entourée de <lien> et </lien>
Nota : pour plus de lisiblité, les "/" sont remplacés par le "#"
Hors ligne
#4 Le 24/11/2007, à 19:01
- TheSponge
Re : [sed] Recuperer url pour y ajouter balises
Ah oui effectivement, c'est plus simple que ce que j'ai fait !
Et pour complexifier les choses, si j'ai un texte du style :
Un site génial ! Ubuntu.fr->http://www.ubuntu-fr.org
Tu sais quoi faire pour arriver à ça ?
Un site génial ! <a href=http://www.ubuntu-fr.org>Ubuntu.fr</a>
Que le nom du lien soit Ubuntu.fr ou Ubuntu.fr-> je m'en moque si ça peut être plus simple.
J'étais bien content d'avoir si bien progressé mais là je rebloque à nouveau ! Grrrrr
Tu peux m'aider à nouveau ou pas ?
#5 Le 24/11/2007, à 19:25
- BlaireauOne
Re : [sed] Recuperer url pour y ajouter balises
Fonctionne pour chaà®ne de type :
blabla ...............->.....http:........................
sed -s 's#\([^ ]\+\)->.*\(http:[^ ,]\+\)#<a href=\2>\1</a>#' liste.txt
Un site génial ! <a href=http://www.ubuntu-fr.org>Ubuntu.fr</a>
Hors ligne
#6 Le 24/11/2007, à 19:37
- TheSponge
Re : [sed] Recuperer url pour y ajouter balises
Whaou ! Les Dieux du sed sont descendu sur Terre ! (comprenne qui pourra... )
C'est exactement ce qu'il me fallait ! Merci beaucoup.
J'ai perdu trop d'heures sur ça aujourd'hui, merci de ne pas m'avoir laissé sombrer dans le désespoir.
Mon héraut !
#7 Le 24/11/2007, à 19:58
- Alain.g
Re : [sed] Recuperer url pour y ajouter balises
attention, .* est gourmand, s'il y a plusieurs URL sur la même ligne, c'est le dernier qu'il prendra. On peut éventuellement remplacer le "." par \s
Sinon pour avoir des quantificateurs non-gourmands, on peut utiliser ssed (super sed) ou directement perl. Le changement se fait en ajoutant un point d'interrogation.
Dernière modification par Alain.g (Le 24/11/2007, à 20:23)
Xubuntu Karmic !
Hors ligne
#8 Le 24/11/2007, à 21:22
- TheSponge
Re : [sed] Recuperer url pour y ajouter balises
Argh, misère. J'ai tout qui fonctionne bien sauf cas particuliers.
J'utilise le texte qui m'est redonné pour le mettre dans des requêtes SQL et par moment j'ai quelque chose de la forme :
'>Texte</a>,
alors que pour que ça fonctionne ça doit être de la forme
>Texte</a>',
Si le texte était identique à chaque fois, j'aurai facilement trouvé, mais ce n'est bien évidement pas aussi simple. Je bloque donc sur 2 points, trouver la bonne expression régulière pour le trouver, et ensuite décaler le ' au bon endroit.
Ça ne paraît pas mais c'est super complexe à faire. Mon cerveau à pris mal aujourd'hui
J'espère que ce dernier exemple me permettra de comprendre comment ça fonctionne. Il n'y a pas beaucoup de sites qui expliquent comment combiner les éléments de base.
Merci du temps que vous avez passé à m'aider, c'est très gentil à vous.
#9 Le 25/11/2007, à 16:59
- TheSponge
Re : [sed] Recuperer url pour y ajouter balises
Whaou ça y est j'ai presque fini ! Tout fonctionne sauf que certains liens contiennent des , alors ça coince. Je vais voir si je trouve comment faire