Enlever tous les tirets dans une url

noaho Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -  
snow_frog Messages postés 216 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour, j'ai très honte.
Je n'arrive pas à transformer (shell bash)
http://www.le-machin-plein-de tirets.com
en
http://www.lemachinpleindetirets.com
(c'est à dire à virer les tirets normaux droit, pour ensuite faire (ça j' y arrive)
lemachinpleindetirets
qui sera le nom de mon dossier d'hébergement du site ci dessus sur les tirets :=) tarets qui va se créer tout seul.
Merci. Vous me faites gagner un we....Il y a sed mais je n'ai pas saisi encore ni trouvé de doc claire dessus
noaho1143 est déconnecté Agir sur la réputation de noaho1143 Signaler un message hors-charte Configuration
MacBook
Mac OS X - Tiger 10.4
iPod shuffle
Modifier/Supprimer le message

6 réponses

lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

Comme ça?
echo http://www.le-machin-plein-de-tirets.com |sed 's/-//g'
http://www.lemachinpleindetirets.com
1
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
;-))
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Salut,
echo "http://www.le-machin-plein-de-tirets.com" | sed 's/-//g'
http://www.lemachinpleindetirets.com
;-))
1
noaho Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   1
 
Merci encore - Je vais y arriver avant cette nuit :=)
Et si je veux comprendre.
J'ai croisé pas mal de trucs qui ont cette tête.
Il y a un pipe line qui récupère echo c'est ça ?
Puis sed, une commande Unix c'est ça ?
Qui fait quoi ?
's/-//g' : je reconnais mon tiret entre les /-/ mais s et g
Pour mon excuse, j'ai débuté Shell vendredi....mais bon...
Merci encore une fois
0
noaho Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   1
 
jlpicy : alias vitesse laconique

Merci. Et si je veux y arriver directement
De :
http://www.ce-site-pleinde-tirets-pasunderscore.com (ou .net ou .fr attention deux lettres...)
A :
cesitepleindetiretspasunderscore
futur nom de dossier.
Encore un Sed ?
Demain je me lets à la recherche de SED
Bonne fin de we
Alain
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896 > noaho Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
Oups je n'avais pas vu la demande :
echo "http://www.ce-site-pleinde-tirets-pasunderscore.com" | sed 's/.*w.//;s/-//g;s/\..*//'
cesitepleindetiretspasunderscore
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
s = commande de substitution
s/motif_à_remplacer/motif_de_remplacement/

g = paramètre de globalité (remplacer toutes les occurences d'une même ligne)

Pour plus de détails :
Sed - Introduction à SED - Part I
Sed - Introduction à SED - Part II
Sed - Introduction à SED - Part III
1
noaho Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   1
 
Merci pour l'explication et la doc.
J'imprime et essaye de comprendre dans ma baignoire demain.
Ce que je mettais une matinée à faire en interface graphique, me prendra....deux minutes !!!
Merci encore
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Re,

Oups je n'avais pas vu la demande :
Puisque je suis chiant ;-))

Ca ne marche pas à tout les coups ;-
Voici 2 exemples

1. il y a un w dans le nom de domaine
echo "http://www.ce-site-web-pleinde-tirets-pasunderscore.com" | sed 's/.*w.//;s/-//g;s/\..*//'
bpleindetiretspasunderscore

2. il n'y a pas www. dans le lien
echo "http://ce-site-pleinde-tirets-pasunderscore.com" | sed 's/.*w.//;s/-//g;s/\..*//'
http://cesitepleindetiretspasunderscore

Une solution qui traite c'est deux cas
echo "http://www.ce-site-web-pleinde-tirets-pasunderscore.com" | sed 's/.*www\.\|.*\/\///;s/-//g;s/\..*//'
cesitewebpleindetiretspasunderscore
echo "http://www.ce-site-pleinde-tirets-pasunderscore.com" | sed 's/.*www\.\|.*\/\///;s/-//g;s/\..*//'
cesitepleindetiretspasunderscore
echo "http://ce-site-pleinde-tirets-pasunderscore.com" | sed 's/.*www\.\|.*\/\///;s/-//g;s/\..*//'
cesitepleindetiretspasunderscore
1
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Oups oups oups ;-((

Merci, je suis allé trop vite.
Lorsque j'ai tapé le point après le w (.*w.) il est clair que je pensé au point (\.) en lui même et non à sa représentation en tant que regex (caractère quelconque).

Donc merci encore pour la rectification et les améliorations notoires ;-))
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570 > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
 
Re,


Merci, je suis allé trop vite.
Tu commences à devenir paresseux. C'est bien ;-))

il est clair que je pensé au point (\.) en lui même et non à sa représentation en tant que regex (caractère quelconque).

Oui, je le pensais aussi, d'ailleurs j'étais étonné que tu n'as pas écrit \.
Les moteurs des regex ne sont pas intelligents. Il sont juste persévérants et obéissants aux ordres ;-))
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
noaho Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   1
 
Merci, je vais attaquer les Reg cette semaine.
J'ai un tout petit peu compris.
Dernière chose pour arriver à mon but :

Comment récupérer la sortie du pipe - lesitesansaucuntiret - dans une variable $sanstirets par exemple ?
Ou comment récupérer le contenu de echo ?
Je n'y arrive pas après moultes tentatives et j'ai besoin de cette variaible pour la suite.
Et de bons livres sur le sujet :=) car c'est un monde nouveau et exhaltant mais compliqué pour moi.
1
snow_frog Messages postés 216 Date d'inscription   Statut Membre Dernière intervention   139
 
pour attribuer ta variable, je dirais:

snow_frog@mars:~/Documents$ SANSTIRET=$(echo "http://www.ce-site-web-pleinde-tirets-pasunderscore.com" | sed 's/.*www\.\|.*\/\///;s/-//g;s/\..*//')
snow_frog@mars:~/Documents$ echo $SANSTIRET
cesitewebpleindetiretspasunderscore

0