Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 12/09/2007, à 18:33

KicheTof

[Résolu]extraire nom du site depuis une url

Hello à tous !

Voila, je récupère une url à l'aide de

read -p "url : " url;

et j'aimerai affecter à une autre variable, le site de l'url, je m'explique :

si par exemple, l'adresse url récupéré dans $url est http://doc.ubuntu-fr.org, j'aimerai que ma variable

site=ubuntu-fr

je sais qu'il existe sed, mais je ne parviens pas a faire un regex me permettant de récupérer ceci.

Si quelqu'un à une solution, merci big_smile

Dernière modification par KicheTof (Le 13/09/2007, à 00:20)


Ubuntu Intrepid Ibex 64bit
Intel Core2Duo E6750 OC @ 3.52GHz - 4Gb DDR2 1066 - GeForce 7900GTO

Hors ligne

#2 Le 12/09/2007, à 19:08

BlaireauOne

Re : [Résolu]extraire nom du site depuis une url

cool
La commande suivante extrait une chaîne de caractère après le 1er point '.' trouvé jusqu'au 2ème point '.' trouvé (exclus).
Tout ce qu'il faut pour comprendre : http://www.shellunix.com/regexp.html

http://doc.ubuntu-fr.org   ---> ubuntu-fr
echo $url | sed  -n 's/[^.]*\.\([^.]*\)\..*/\1/p'


ou plus simple avec awk :
http://www.shellunix.com/awk.html

echo $url | awk -F"." '{print $2}'

Hors ligne

#3 Le 12/09/2007, à 19:18

KicheTof

Re : [Résolu]extraire nom du site depuis une url

j'ai qu'une seule chose à te dire...


MERCIIIIIIIII !!! big_smile:D:D


(c'est mieux quoi, sed ou awk ?)


Ubuntu Intrepid Ibex 64bit
Intel Core2Duo E6750 OC @ 3.52GHz - 4Gb DDR2 1066 - GeForce 7900GTO

Hors ligne

#4 Le 12/09/2007, à 20:51

BlaireauOne

Re : [Résolu]extraire nom du site depuis une url

Dans notre exemple, sed c'est bien pour la frime roll,
mais awk est tout de même plus lisible smile

De plus avec awk tu peux faire de vrais programmes.


3ème possibilité avec la commande cut :

echo $url | cut -d"." -f2

Hors ligne

#5 Le 12/09/2007, à 20:58

KicheTof

Re : [Résolu]extraire nom du site depuis une url

cut est carrément le raccourcis de awk big_smile

j'utiliserai cut ou awk smile tant que j'ai le nom du site big_smile c'est pour faire un case wink


Ubuntu Intrepid Ibex 64bit
Intel Core2Duo E6750 OC @ 3.52GHz - 4Gb DDR2 1066 - GeForce 7900GTO

Hors ligne

#6 Le 12/09/2007, à 23:46

KicheTof

Re : [Résolu]extraire nom du site depuis une url

mon problème maintenant, c'est que lorsque j'essaie de l'affecter a une variable, celle-ci ne contient pas la valeur.

#!/bin/bash
url="www.ubuntu-fr.org";
site= echo $url | cut -d"." -f2;
echo $site;

me renvoi :

./test
ubuntu-fr
-- un renvoie a la ligne vide wink

je pense que c'est du a echo, mais je ne sais pas par quoi remplacer :S

Dernière modification par KicheTof (Le 12/09/2007, à 23:47)


Ubuntu Intrepid Ibex 64bit
Intel Core2Duo E6750 OC @ 3.52GHz - 4Gb DDR2 1066 - GeForce 7900GTO

Hors ligne

#7 Le 12/09/2007, à 23:59

Sleipnir

Re : [Résolu]extraire nom du site depuis une url

#!/bin/bash
url="www.ubuntu-fr.org"
site=`echo $url | cut -d"." -f2`
echo $site
exit

Avec les " ` " , cela me renvois uniquement "ubuntu-fr".

Hors ligne

#8 Le 13/09/2007, à 00:10

KicheTof

Re : [Résolu]extraire nom du site depuis une url

raaah j'avais testé mais j'm'étais tromp de ' ... ` lol

Merci beaucoup à toi !


Ubuntu Intrepid Ibex 64bit
Intel Core2Duo E6750 OC @ 3.52GHz - 4Gb DDR2 1066 - GeForce 7900GTO

Hors ligne

#9 Le 13/09/2007, à 00:16

Sleipnir

Re : [Résolu]extraire nom du site depuis une url

personellement, j'ai beaucoup merdais avec les "`', les $() pareil que ``, enfin, à force de tester, on s'en sort....!

Hors ligne

#10 Le 13/09/2007, à 00:20

KicheTof

Re : [Résolu]extraire nom du site depuis une url

tout a fait d'accord smile

et en plus j'étais persuadé de les avoir testés... et bah non !

En tout cas merci beaucoup !


Ubuntu Intrepid Ibex 64bit
Intel Core2Duo E6750 OC @ 3.52GHz - 4Gb DDR2 1066 - GeForce 7900GTO

Hors ligne

#11 Le 13/09/2007, à 18:02

KicheTof

Re : [Résolu]extraire nom du site depuis une url

c'est re moi smile

y'a un légé bug, si l'url est http://ubuntu-fr.org, ça ne fonctionne plus, normal il prend entre les 2 points, mais j'sais pas comment corriger ça sad


Ubuntu Intrepid Ibex 64bit
Intel Core2Duo E6750 OC @ 3.52GHz - 4Gb DDR2 1066 - GeForce 7900GTO

Hors ligne

#12 Le 13/09/2007, à 19:07

Sleipnir

Re : [Résolu]extraire nom du site depuis une url

Si tu n'as que des adresses du genre http://ubuntu-fr.org, ou http://www.ubuntu-fr.org , soit tu coupes à partir du '/' , et tu auras un truc pas super joli ou alors faut passer le tout à la "moulinette".
genre couper au '/' puis couper au '.' , compter le nombre de $ (awk) pour savoir si il y a un www, puis extraire le morceau qui t'intéresse. Je sais pas si j'ai été clair...?
Doit y avoir plus simple bien sur.... ( y a toujours plus simple ! )

Hors ligne

#13 Le 13/09/2007, à 20:49

BlaireauOne

Re : [Résolu]extraire nom du site depuis une url

cool
Solution avec awk pour gérer des url comme :

http://ubuntu-fr.org
http://www.ubuntu-fr.org

Le principe est qu'avec awk du gnu (bash), tu peux déclarer plusieurs caractères séparateurs de champs.
Dans notre cas, '/' et '.' sont déclarés comme séparateurs de champs.
Aussi, selon la présence, ou non, de "www.", l'adresse sera dans le champ $3 ou $4.


Exemple aéré :

url="http://ubuntu-fr.org"

adresse=$(echo $url | awk -F"[/.]" '
{
	if ($3=="www") {print $4} else {print $3}
}')
echo $adresse

Même exemple, plus compact :

url="http://ubuntu-fr.org"

adresse=$(echo $url | awk -F"[/.]" '{if ($3=="www") {print $4} else {print $3}}')
echo $adresse

Hors ligne

#14 Le 14/09/2007, à 07:52

KicheTof

Re : [Résolu]extraire nom du site depuis une url

MAGNIFIQUE !!!

BlaireauOne Merci beaucoup !!!


Ubuntu Intrepid Ibex 64bit
Intel Core2Duo E6750 OC @ 3.52GHz - 4Gb DDR2 1066 - GeForce 7900GTO

Hors ligne

#15 Le 14/09/2007, à 10:37

Raghnarok

Re : [Résolu]extraire nom du site depuis une url

La solution de BlaireauOne est pas complète...

J'y suis presque mais je ne sais pas comment afficher le dernier élément, ou avant-dernier...

Par exemple si j'ai www.google.com afficher juste google... Mais avec la même regle si j'ai www.doc.ubuntu-fr.org afficher ubuntu-fr...
Je sais pas si c'est possible...


Feisty/XP Desktop ( Pentium D 3.00 GHz, 2Go DDR2 800, GeForce 7600GT )
Hardy Laptop ( Centrino 2 Duo 2.00 Ghz, 2Go DDR2 667, Nvidia FX350M )

Hors ligne

#16 Le 14/09/2007, à 12:11

KicheTof

Re : [Résolu]extraire nom du site depuis une url

je me souviens avoir fait un regex en php pour sortir ceci, est-ce qu'on peut utiliser un regex php dans le bash ?

je me souviens qu'il y avait des "ou", du genre

^/(http://|www.)(*?)+.([a-z]{2,3})

un truc dans le genre wink


Ubuntu Intrepid Ibex 64bit
Intel Core2Duo E6750 OC @ 3.52GHz - 4Gb DDR2 1066 - GeForce 7900GTO

Hors ligne

#17 Le 14/09/2007, à 13:08

Raghnarok

Re : [Résolu]extraire nom du site depuis une url

Voila cette regexp doit être bonne...

sed 's/\(http\:\/\/\)\?\(www\)\?\(.*\.\)\?\([^.]*\)\.[a-z]\{2,3\}/\4/'

Feisty/XP Desktop ( Pentium D 3.00 GHz, 2Go DDR2 800, GeForce 7600GT )
Hardy Laptop ( Centrino 2 Duo 2.00 Ghz, 2Go DDR2 667, Nvidia FX350M )

Hors ligne

#18 Le 14/09/2007, à 13:10

KicheTof

Re : [Résolu]extraire nom du site depuis une url

a mon avis on peut la rendre plus jolie smile avec tout les /\ :S


Ubuntu Intrepid Ibex 64bit
Intel Core2Duo E6750 OC @ 3.52GHz - 4Gb DDR2 1066 - GeForce 7900GTO

Hors ligne

#19 Le 14/09/2007, à 13:13

Raghnarok

Re : [Résolu]extraire nom du site depuis une url

QUoi quoi quoiiiiiiiiiii???
Moi je la trouve magnifique ma regexp ... C'est presque du 1337 tongue


Feisty/XP Desktop ( Pentium D 3.00 GHz, 2Go DDR2 800, GeForce 7600GT )
Hardy Laptop ( Centrino 2 Duo 2.00 Ghz, 2Go DDR2 667, Nvidia FX350M )

Hors ligne

#20 Le 14/09/2007, à 13:14

KicheTof

Re : [Résolu]extraire nom du site depuis une url

oui elle est complètement opérationnelle !! big_smile

mais p't'etre que si on met s=( y'aura p't'etre pas besoin de mettre tout les /\


Ubuntu Intrepid Ibex 64bit
Intel Core2Duo E6750 OC @ 3.52GHz - 4Gb DDR2 1066 - GeForce 7900GTO

Hors ligne