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] Découper une chaine de caractères et y insérer des -


Sujet :

Linux

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    347
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 347
    Points : 203
    Points
    203
    Par défaut [BASH] Découper une chaine de caractères et y insérer des -
    Bonjour,


    j'ai une chaine: et j'aimerai que ça donne ça:
    le top ça serait de découper en fonction de la taille (par exemple, ici 12/x (3))

    Auriez vous une idée? en une petite commande?

    je vous remercie d'avance

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 596
    Points : 19 481
    Points
    19 481

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    347
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 347
    Points : 203
    Points
    203
    Par défaut
    :2 j'avoue ne pas comprendre sans exemple...

    mais merci, je continue à lire

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    347
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 347
    Points : 203
    Points
    203
    Par défaut
    je sais pas si awk permettrai à l'aide d'un pattern de faire ça?

  5. #5
    Membre éclairé Avatar de jmelyn
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2007
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2007
    Messages : 703
    Points : 823
    Points
    823
    Par défaut
    Bon, j'ai rien trouvé de transcendant. Si quelqu'un a une meilleure solution...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    a=D5F6SF45HBFF
    b=$(echo $a | sed 's@\(...\)@\1-@g')
    echo ${b%-}
    D5F-6SF-45H-BFF

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 596
    Points : 19 481
    Points
    19 481
    Par défaut
    meilleure ? non, en Bash :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    var=D5F6SF45HBFF
    
    x=0
    echo "${var:x:3}-${var:x+=3:3}-${var:x+=3:3}-${var:x+=3:3}"
    #soit
    echo "${var::3}-${var:3:3}-${var:6:3}-${var:9:3}"
    #ou, s'il faut avoir la même souplesse que procure sed
    for (( x=0; x<${#var}; x+=3 )); do
       new="${new:+$new-}${var:x:3}"
    done
    echo $new

  7. #7
    Membre éclairé Avatar de jmelyn
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2007
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2007
    Messages : 703
    Points : 823
    Points
    823
    Par défaut
    Solution basée sur la troisième de N_BaH, complètement paramétrable. La plus propre à mon avis. Merci N_BaH.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #!/bin/bash
     
    var=1234567890
    size=3
    sep=-
     
    new=${var:0:$size}
    for (( i=size; i < ${#var}; i+=size ))
    do
      new+=$sep${var:$i:$size}
    done

  8. #8
    Membre averti Avatar de SYL666
    Inscrit en
    Novembre 2003
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 308
    Points : 411
    Points
    411
    Par défaut
    Ca tue ce problème en fait, j'adore!
    Il faudrait lancer un concours de one-liners qui résout efficacement ce problème

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    347
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 347
    Points : 203
    Points
    203
    Par défaut
    Je vous remercie,

    je suis bien comptant de voir que le problème soit une sorte de défie,

    personnellement, je savais pas du tout comment faire simplement.

    Là j'ai quelques solutions fonctionnelles, je vous remercie.

    C'est résolut

    Encore merci à tous

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

Discussions similaires

  1. [bash] Découper une chaine de caractères
    Par _PaTaTe_ dans le forum Shell et commandes GNU
    Réponses: 8
    Dernier message: 28/02/2015, 19h16
  2. Bash - Découper une chaine de caractères
    Par nicolas.pissard dans le forum Shell et commandes GNU
    Réponses: 13
    Dernier message: 16/12/2014, 14h18
  3. [SQ2K] Découper une chaine de caractères
    Par maitrebn dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 17/04/2007, 20h22
  4. Réponses: 6
    Dernier message: 15/04/2007, 14h06
  5. [VBA] Découper une chaine de caractères
    Par rantanplan81 dans le forum VBA Access
    Réponses: 3
    Dernier message: 12/04/2007, 16h26

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