IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Script shell avec sed et expression réguliere pour []


Sujet :

Shell et commandes GNU

  1. #1
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2017
    Messages : 8
    Points : 14
    Points
    14
    Par défaut Script shell avec sed et expression réguliere pour []
    Bonjour,

    Dans un script, je manipule les liens trouvé dans un email.
    Ces urls peuvent entre autre être entourées par [] ce que je n'arrive pas à détecter.
    Exemple simplifié (GNU sed version 4.1.5) où je souhaite supprimer la chaîne qui commence par "a" jusqu'au "[]" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    { echo "abcd[" ; echo "abcd]"; } | sed -re "s/a[^[]]*//g"
    qui ne ne supprime que "ab" au lieu de supprimer "abcd"

    J'ai également tenté d’échapper les []
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    { echo "abcd[" ; echo "abcd]"; } | sed -re "s/a[^\[\]]*//g"
    le résultat n'est pas mieux

    Quel est mon erreur ?

    Il y a-t-il une meilleur façon de lister les caractères séparant une url de la suite ?
    Car pour l'instant j'accumule les caractères de séparations comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    https?:\/\/domaine\/[^ \"()'<>$]*
    Merci.

  2. #2
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Salut,

    sed -r 's/a[^][]*//g'

    Édit :

    Comme je sens que tu vas me demander le comment du pourquoi de la chose…

    info sed (Regular Expressions) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    `[^LIST]'
         Matches any single character in LIST: for example, `[aeiou]'
         matches all vowels.  A list may include sequences like
         `CHAR1-CHAR2', which matches any character between (inclusive)
         CHAR1 and CHAR2.
     
         A leading `^' reverses the meaning of LIST, so that it matches any
         single character _not_ in LIST.  To include `]' in the list, make
         it the first character (after the `^' if needed), to include `-'
         in the list, make it the first or last; to include `^' put it
         after the first character.
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2017
    Messages : 8
    Points : 14
    Points
    14
    Par défaut
    Merci pour la solution et l'explication
    D'où vient l'extrait de doc que tu as quoté ? je n'avais pas trouvé cette info

  4. #4
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Points : 7 842
    Points
    7 842
    ɹǝsn *sıɹɐlos*

  5. #5
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Citation Envoyé par Marc_marc Voir le message
    Merci pour la solution et l'explication
    D'où vient l'extrait de doc que tu as quoté ? je n'avais pas trouvé cette info
    Dans un terminal info sed
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2017
    Messages : 8
    Points : 14
    Points
    14
    Par défaut
    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Script shell avec sed et expression réguliere
    Par astroflo dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 05/02/2016, 11h30
  2. script shell avec sed
    Par zorooo dans le forum Shell et commandes GNU
    Réponses: 8
    Dernier message: 15/12/2009, 13h00
  3. script shell avec sed
    Par Eye4eye dans le forum Shell et commandes GNU
    Réponses: 9
    Dernier message: 13/10/2008, 21h26
  4. Script shell avec HTML avec warning
    Par ab_2006 dans le forum Shell et commandes GNU
    Réponses: 8
    Dernier message: 05/10/2006, 13h15
  5. Un script shell avec nombre d'argument variable
    Par lastrecrue dans le forum Linux
    Réponses: 1
    Dernier message: 28/05/2006, 11h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo