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 :

Problème avec sed * et +


Sujet :

Shell et commandes GNU

  1. #1
    DIE
    DIE est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 101
    Points : 66
    Points
    66
    Par défaut Problème avec sed * et +
    Bonjour,

    j'ai ma commande SED qui ne fonctionne pas comme je le souhaite :

    Remplacer les [ par ${ et les ] par }
    ça fonctionne bien avec la commande ci dessous

    sed 's/\[\([a-zA-Z]*\)]/${\1}/g' aa


    Par contre en remplaçant l'astérix * par +

    sed 's/\[\([a-zA-Z]+\)]/${\1}/g' aa

    je voulais que si le sed rencontrais
    [] cela ne remplace pas mais hélas si dans ce cas [] devient ${} alors que l'expression

    [a-zA-Z]+ n'est pour moi pas rempli

    J'espère avoir été clair

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Points : 1 206
    Points
    1 206
    Par défaut
    Dans les regex du shell, le quantificateur + doit être échappé mais pas le *.

    Personnellement j'utilise souvent l'option -r (regex étendues) de sed, si ta version le permet.

  3. #3
    DIE
    DIE est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 101
    Points : 66
    Points
    66
    Par défaut
    non ma version de SED ne permet pas l'option -r

    de plus l'échappement de + ne fait pas mieux fonctionner la commande

    je précise qu'avec le + plus AUCUNE substitution ne marche ainsi :


    [xterm] devient bien ${term} avec *

    alors que ça reste [xterm] avec le + (alors que pour moi il y a bien au moins 1 ou plus de caractère matché)

    je comprend tjs pas

  4. #4
    Membre chevronné

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Points : 1 894
    Points
    1 894
    Par défaut
    Je n'ai pas trop de solution pour ton +, mais avec ceci : \{1,\} ça fait pareil et ça semble marcher

    ps.: il y a un forum pour AIX

  5. #5
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 587
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 587
    Points : 19 467
    Points
    19 467
    Par défaut
    \+ est une extension GNU. Or, AIX n'utilise pas GNUsed (si je me souviens bien).

  6. #6
    DIE
    DIE est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 101
    Points : 66
    Points
    66
    Par défaut
    je cherche à comprendre

    * => 0 ou n caractère
    + => 1 ou n caractère
    ? => 0 ou 1 caractère

    y a bien qq'un qui va me donner une réponse

  7. #7
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 587
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 587
    Points : 19 467
    Points
    19 467
    Par défaut
    Il aurait été bon (à mon goût) d'avoir la version de sed que tu utilises (s'il n'y a ni -r, ni -i, ni --version..., alors ce n'est pas GNU/sed), ainsi qu'un échantillon représentatif du fichier à traiter, et la sortie attendue.

    Si tu utilises la version de sed livrée par défaut avec AIX, alors tu devrais suivre les recommandations d'Alek-C, car `+` et `?` n'y sont pas disponible...

    voir (en anglais, n'ai pas trouvé en français) :
    sed sur AIX
    manipuler du texte avec sed sur AIX

  8. #8
    Membre chevronné

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Points : 1 894
    Points
    1 894
    Par défaut
    +1, je ne vois pas ce que tu veux de plus comme réponse Comme N_BaH le signale, sed (et globalement, beaucoup d'autres outils) ne fonctionnent pas exactement de la même manière que cela soit sous Linux ou sous d'autres OS (notamment AIX qui est franchement à la bourre de ce côté là).

    Et il semble donc que + et ? ne soit donc tout simplement pas supportés. CQFD

Discussions similaires

  1. Problème avec SED et les caractères "/" sur Solaris
    Par supermen3000 dans le forum Solaris
    Réponses: 2
    Dernier message: 03/07/2009, 11h14
  2. Problème avec utilitaire sed
    Par carlou135 dans le forum Linux
    Réponses: 13
    Dernier message: 22/11/2007, 18h58
  3. [Shell] problème avec sed et awk
    Par tizilfin dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 15/11/2007, 13h01
  4. Problème avec sed
    Par Zlika_ese dans le forum Linux
    Réponses: 1
    Dernier message: 26/05/2007, 21h39
  5. Problème avec la commande sed
    Par JUSTIN Loïc dans le forum Linux
    Réponses: 2
    Dernier message: 05/09/2006, 10h17

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