Enlever tous les tirets dans une url

noaho Messages postés 6 Statut Membre -  
snow_frog Messages postés 214 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
Configuration: Mac OS X
Firefox 3.0.7

6 réponses

  1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    Comme ça?
    echo http://www.le-machin-plein-de-tirets.com |sed 's/-//g'
    http://www.lemachinpleindetirets.com
    
    1
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      ;-))
      0
  2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,
    echo "http://www.le-machin-plein-de-tirets.com" | sed 's/-//g'
    http://www.lemachinpleindetirets.com
    ;-))
    1
    1. noaho Messages postés 6 Statut Membre 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
    2. noaho Messages postés 6 Statut Membre 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
      1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898 > noaho Messages postés 6 Statut Membre
         
        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
  3. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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
    1. noaho Messages postés 6 Statut Membre 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
  4. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    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
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      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
      1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571 > 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. noaho Messages postés 6 Statut Membre 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
  7. snow_frog Messages postés 214 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