#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
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
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 !!! :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 ,
mais awk est tout de même plus lisible
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
j'utiliserai cut ou awk tant que j'ai le nom du site c'est pour faire un case
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
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
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
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
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
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
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 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
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 !!
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