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 :

Boucle for avec multiple argument


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
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 135
    Par défaut Boucle for avec multiple argument
    Bonjour à tous,

    J'aimerais savoir s'il est possible d'avoir plusieurs argument dans une boucle for tout en extractant 2 données différentes d'un même fichier.

    Par exemple :

    /tmp/test.txt
    10 100
    20 200
    30 300

    Voici ce que j'aimerais faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    a=$(cat /tmp/test.txt | grep ^[0-9] | awk '{print $1}')
    b=$(cat /tmp/test.txt | grep ^[0-9] | awk '{print $2}')
     
    for i j in $a $b;
    do
    echo "13"
    echo "$i"
    echo "$j"
    done
    Le problème provient du fait que j'exploite une seconde colonne dans le fichier mais je n'ai pas d'idée comme faire autrement.

    Voici le résultat que je recherche :
    13
    10
    100
    13
    20
    200
    30
    300

    Pouvez-vous m'aiguiller si vous avez une idée svp

  2. #2
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 135
    Par défaut
    J'ai trouvé le moyen des tableaux comme suit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    array1=($a)
    array2=($b)
    count=${#array1[@]}
    for i in `seq 1 $count`
    do
            echo 13
            echo ${array1[$i-1]}
            echo ${array2[$i-1]}
    done
    Si vous avez une autre méthode

  3. #3
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ cat f2
    10 100
    20 200
    30 300
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $ while read a b;do echo -e "13\n${a}\n${b}"; done < f2
    13
    10
    100
    13
    20
    200
    13
    30
    300

  4. #4
    Membre émérite Avatar de balkany
    Homme Profil pro
    Touriste
    Inscrit en
    Juillet 2017
    Messages
    348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Touriste

    Informations forums :
    Inscription : Juillet 2017
    Messages : 348
    Par défaut
    À moins que tu aies une raison particulière d'extraire les données pour les mettre dans des variables, puis de faire des boucles, tu peux simplement faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk '/^[0-9]/{printf("13\n%s\n%s\n",$1,$2)}' /tmp/test.txt

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Salut,

    Citation Envoyé par balkany Voir le message
    À moins que tu aies une raison particulière d'extraire les données pour les mettre dans des variables, puis de faire des boucles, tu peux simplement faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk '/^[0-9]/{printf("13\n%s\n%s\n",$1,$2)}' /tmp/test.txt
    Ou avec sed : sed 's/^/13 /;s/ /\n/g' f1

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 15/04/2016, 10h18
  2. [XL-2003] boucle For avec multiple conditions d'arret
    Par yvespi dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 26/05/2010, 09h30
  3. boucle for avec condition
    Par Daniel Magron dans le forum Delphi
    Réponses: 4
    Dernier message: 22/01/2007, 16h18
  4. Réponses: 2
    Dernier message: 28/08/2006, 18h17
  5. [VB6] boucle for avec liste de valeur defini
    Par Morpheus2144 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 06/04/2006, 18h12

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