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

Linux Discussion :

[BASH] Remplacer une série d'espace


Sujet :

Linux

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 74
    Par défaut [BASH] Remplacer une série d'espace
    Bonjour,

    J'ai un problème bête que je n'arrive pas à résoudre.
    J'essaye de remplacer une série d'espace par un underscore dans un script bash
    Par ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Avant: "Hell   Yeah" #Hell<space><space><space>Yeah
    Après: "Hell_Yeah"
    du coup j'essaye quelque chose comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OUTPUT=${OUTPUT//(" ")+/"_"}
    Mais ça ne donne rien.

    Une idée dans l'assemblée ?

    Merci d'avance

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 660
    Par défaut
    Bonjour,

    le + est à placer avant la parenthèse ouvrante
    les guillemets sont superflu, si non nocifs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Avant="Hell   Yeah" #Hell<space><space><space>Yeah
    echo "${Avant//+( )/_} "
    Hell_Yeah
    au cas ou... il ne s'agit de regexes, mais de motifs génériques étendus (cf. man bash)
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 74
    Par défaut
    Bonjour et merci pour ta réponse N_BaH.

    J'ai testé ta syntaxe, malheureusement ça ne marche pas.
    Cette syntaxe fonctionne chez toi ?

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Je tape ma regex de mémoire car je peux pas tester dans l'immédiat
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    avant="Hell   Yeah" #Hell<space><space><space>Yeah
    apres=$(echo "$avant" |sed -e "s/ \{1,\}/_/g")
    echo $apres

    Ma seule inquiétude concerne les backslashes devant les accolades. Je testerai dans la matinée. Si erreur je reviendrai éditer le post...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 660
    Par défaut
    il faut activer l'option extglob :
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 74
    Par défaut
    Excellent !

    Vos deux solutions marchent, je ne savaient effectivement pas qu'il fallait activer l'option extglob.

    Merci à vous deux.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/12/2014, 14h49
  2. [vi] Remplacer une suite d'espaces par un seul caractère
    Par kondor76 dans le forum Shell et commandes GNU
    Réponses: 53
    Dernier message: 19/04/2013, 09h51
  3. [Sed]Remplacer une série d'espaces par un délimiteur
    Par progfou dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 24/01/2011, 15h09
  4. [RegEx] Remplacer une suite d'espace blanc par un seul
    Par Sayrus dans le forum Langage
    Réponses: 2
    Dernier message: 27/06/2008, 11h31
  5. Remplacement simple d'une chaine avec espace
    Par King Boulet dans le forum Linux
    Réponses: 8
    Dernier message: 14/11/2006, 10h02

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