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 :

Découper une longue chaine


Sujet :

Linux

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 54
    Points : 46
    Points
    46
    Par défaut Découper une longue chaine
    Bonjour,

    J'aimerais savoir s'il existe une commande qui permette de découper une longue chaine en plusieurs chaines d'une certaine longueur.
    J'ai vu qu'il existait la commande split, mais il ne semble pas qu'elle s'applique dans mon cas.
    En fait j'ai un chaine de 2000 caractères j'aimerais obtenir 10 chaines de 200 caractères.

    Merci

  2. #2
    Membre expérimenté
    Avatar de narmataru
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 548
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 548
    Points : 1 680
    Points
    1 680
    Par défaut
    bonjour,
    avec sed tu peuc faire celà :
    narma@linimi:/tmp/tiie$ chaine="abcdefghijklmnopqrstvwxyz"
    narma@linimi:/tmp/tiie$ taille=10
    narma@linimi:/tmp/tiie$ echo $chaine | sed -re "s/(.{$taille})/\1\n/g"
    abcdefghij
    klmnopqrst
    vwxyz
    narma@linimi:/tmp/tiie$ taille=5
    narma@linimi:/tmp/tiie$ echo $chaine | sed -re "s/(.{$taille})/\1\n/g"
    abcde
    fghij
    klmno
    pqrst
    vwxyz

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 54
    Points : 46
    Points
    46
    Par défaut
    Lorsque j'exécute cette commande , j'obtiens l'erreur suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed: illegal option -- r
    A quoi correspond l'option -r ? (je ne l'ai pas trouvée dans les manuels SED)
    Merci

  4. #4
    Membre expérimenté
    Avatar de narmataru
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 548
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 548
    Points : 1 680
    Points
    1 680
    Par défaut
    c'est pour avoir les expression régulière étendues sans avoir besoin de mettre des \ devant les { et } et ( )....
    Citation Envoyé par man sed
    -r, --regexp-extended

    use extended regular expressions in the script.
    C'est vrai que j'ai tendance à toujours l'utiliser.

    De cette manière ça fonctionne aussi :
    echo $chaine | sed -e "s/\(.\{$taille\}\)/\1\n/g"

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 54
    Points : 46
    Points
    46
    Par défaut
    Cette commande me place un n toutes les 5 lettres
    le \n ne semble pas interpreté comme tel

  6. #6
    Membre expérimenté
    Avatar de narmataru
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 548
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 548
    Points : 1 680
    Points
    1 680
    Par défaut
    Essaye peut être en changeant \n en \\n. En tou cas chez moi ça fonctionne sinon je ne t'aurais pas proposé cette solution
    Sous quel environnement toune-tu ? et quelle est taversion de sed ?

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 54
    Points : 46
    Points
    46
    Par défaut
    Même avec \\n , j'obtiens le même résultat.

    Je travaille sous Sun 5.6 par contre je ne sais pas comment voir me version de sed ?

    Merci.

  8. #8
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    pour un retour à la ligne dans sed tu fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cat monfichier | sed 's/monmotif/\
    monmotifavecun_cr_avant/g'
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 54
    Points : 46
    Points
    46
    Par défaut
    Désolée mais je ne comprend pas la réponse ?

  10. #10
    Membre expérimenté
    Avatar de narmataru
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 548
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 548
    Points : 1 680
    Points
    1 680
    Par défaut
    il te dit d'essayer de cette manière :

    echo $chaine | sed -e "s/\(.\{$taille\}\)/\1\
    /g"
    c'est à dire en mettant un vrai retour à la ligne

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 54
    Points : 46
    Points
    46
    Par défaut
    Merci ..
    Malheureusement maintenant la commande me retourne la chaine d'origine.

  12. #12
    Membre expérimenté
    Avatar de narmataru
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 548
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 548
    Points : 1 680
    Points
    1 680
    Par défaut
    et qu'est-ce que ressort cette commande ?

    echo "aaabbbbcccc"|sed -e "s/b+/yyy/g"

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 54
    Points : 46
    Points
    46
    Par défaut
    Cette commande retourne

  14. #14
    Membre expérimenté
    Avatar de narmataru
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 548
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 548
    Points : 1 680
    Points
    1 680
    Par défaut
    hé ben il est bizarre ton sed ! chez moi ça remplace bbb par yyy

Discussions similaires

  1. Multiplier une longue chaine hexa
    Par mashu dans le forum Langage
    Réponses: 15
    Dernier message: 21/09/2009, 16h39
  2. Parcourir une longue chaine de caractères
    Par SnoT- dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 03/08/2009, 10h48
  3. Couper une sous chaine
    Par hammag dans le forum Langage
    Réponses: 5
    Dernier message: 07/07/2009, 16h43
  4. Réponses: 1
    Dernier message: 15/12/2006, 20h07
  5. Réponses: 10
    Dernier message: 17/05/2006, 11h50

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