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 :

Découpage chaines caractère (une ligne csv)


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2012
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 54
    Par défaut Découpage chaines caractère (une ligne csv)
    Bonjour,

    Pouvez vous m'aider à découper une chaîne de caractère :

    J'ai des valeurs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #!/bin/bash
     
    export datas="valeur1;valeur2;valeur3;valeurN"
     
    donnes=$(echo $datas | awk -F ";" '{print $1}')
     
    val1=$(echo $datas | awk -F ";" '{print $2}')
    val2=$(echo $datas | awk -F ";" '{print $3}')
     
    echo "$donnes  $val1  $val2"

    j'ai bien tout les valeurs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    valeur1  valeur2  valeur3
    mais j'aimerais une boucle de façon dynamique de détecter automatiquement avec "for"

    Il y a t une autre solution pour faire cette boucle ?


    Merci pour votre aide !!

    Bonne journée

  2. #2
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    awk -F";" '{ print NF }'

  3. #3
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2012
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 54
    Par défaut
    Merci mais comment je fais pour renvoyer les valeur NF dans chaque variable différent ?

  4. #4
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cat fichier.truc.machin.123.csv | awk -F ";"  '{ for(i=0; i<NF ; i++ ) print $i } '

  5. #5
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 134
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IFS=';' read donnes val1 val2 <<< "${datas}"
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  6. #6
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2012
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 54
    Par défaut
    Merci beaucoup pour les deux solution

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 658
    Par défaut
    bonjour,

    j'aimerais une boucle de façon dynamique de détecter automatiquement avec "for"
    détecter quoi ?

    pourquoi awk ?
    bash peut probablement le faire sans le recours à un programme externe. mais faire quoi ??? !

    EDIT: si il y a un grand nombre de champs, ou si ce nombre est inconnu ou variable, utilise un tableau.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  8. #8
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 349
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 349
    Par défaut
    Juste pour le fun (ne pas utiliser) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $ foo="val1;val2;val3"
    $ i=0
    $ eval declare bar\$\(\(i++\)\)=${foo//;/ bar\$((i++))=}
    $ echo $bar0
    val1
    $ echo $bar1
    val2
    $ echo $bar2
    val3

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

Discussions similaires

  1. importer le 0 d'une ligne csv
    Par olivphp dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 10/10/2017, 14h35
  2. Recherche plusieurs chaines dans une ligne
    Par emmachane dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 30/05/2011, 17h14
  3. Réponses: 2
    Dernier message: 13/11/2008, 13h38
  4. Réponses: 4
    Dernier message: 10/07/2008, 13h34
  5. Découpage dynamique d'une chaine de caractère
    Par zut94 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 28/10/2005, 18h49

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