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 :

Structure de boucles


Sujet :

Shell et commandes GNU

  1. #21
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 631
    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 631
    Points : 30 865
    Points
    30 865
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    read -u 3 x || break
    Effectivement (viens d'aller voir le help)... comme je le dis parfois, j'ai pas suivi les dernières évolutions du shell et j'ai donc des réflexes qui datent du Bourne originel. Mais bon, on peut parfaitement allumer un feu avec des silex...

    Citation Envoyé par disedorgue Voir le message
    Sinon, on a aussi la commande paste qui fait exactement le boulot:
    Déjà dit
    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]

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 539
    Points : 19 361
    Points
    19 361
    Par défaut
    Mais bon, on peut parfaitement allumer un feu avec des silex...
    barbare ! troglodyte ! néanderthal !

    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #23
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 107
    Points : 33
    Points
    33
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    ce serait bien qu'on ait le vrai format de ces fichiers !

    ça nous éviterait de piétiner :
    « ah, mais je vous ai pas tout dit »
    « ah, mais j'ai encore une précision à donner »
    « ah, mais il faudrait que ... par rapport à ce que je n'ai pas encore dit »


    des demi-énoncés n'ont même pas une demi-solution.
    Loooool , c'est difficile d'être une princesse

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 539
    Points : 19 361
    Points
    19 361
    Par défaut
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #25
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 107
    Points : 33
    Points
    33
    Par défaut
    Ce sont des fichiers texte que j'utilise sous Nedit

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 539
    Points : 19 361
    Points
    19 361
    Par défaut
    :/ ça nous donne toujours pas le vrai format.

    c'est quoi Nedit ? ça donne quoi comme information par rapport au script que tu veux faire ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  7. #27
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 631
    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 631
    Points : 30 865
    Points
    30 865
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par judkil Voir le message
    Ce sont des fichiers texte que j'utilise sous Nedit
    Quand N_BaH te demandait le format, c'était un sous-entendu pour qu'avec le format tu expliques aussi quoi faire. Parce que "juste le format" ça répond pas à toutes nos interrogations
    • le lien entre "DMP" et "dump" ? A priori le lien semble être ligne "n" du fichier 1 associée à la ligne "n" du fichier 2 donc cela signifie qu'on ne fait aucune recherche du type "lettres d, m et p obligatoirement présentes dans "dump" => la ligne (on va dire que chaque fichier ne contient qu'une ligne pour simplifier) du fichier 1 peut contenir "truc", la ligne du fichier 2 peut contenir "chose" ça matchera tout autant
    • le lien entre "dump" et "explicite_pose_name-dump.txt" ? Juste rajouter "explicite_pose_name-" devant et ".txt" derrière ?
    • pourquoi la chaine "DMP" du fichier 1 n'apparait plus au résultat final "explicite_pose_name-dump.txt" ? Comme l'a dit N_BaH, dans ce cas le fichier 1 ne sert à rien (on aura le même résultat en lisant simplement fichier 2)
    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]

  8. #28
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 266
    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 266
    Points : 12 681
    Points
    12 681
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    J'avais pas vu, étant donner l'imbrication via un boucle...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ printf '[%s %s]\n' $(paste l1 l2)
    [DMP dump]
    [BEZ benza]
    Cordialement.

  9. #29
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 631
    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 631
    Points : 30 865
    Points
    30 865
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par disedorgue Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ printf '[%s %s]\n' $(paste l1 l2)
    [DMP dump]
    [BEZ benza]
    Pas mal !!! printf gère lui-même la boucle en interne
    Ca je ne savais pas.
    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]

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 539
    Points : 19 361
    Points
    19 361
    Par défaut
    ce n'est pas tout à fait ça.
    printf affiche les données qui lui sont passés en argument selon le format indiqué.
    étant donné que la Substitution de commande n'est pas enclose entre guillemets, la sortie de paste se fait sur une seule ligne, et printf affiche simplement (selon le format indiqué) deux par deux.

    ce qui, si on omet l'ajout des crochets, est inutile.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  11. #31
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 238
    Points : 13 443
    Points
    13 443
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ printf "[%s %s]" waka "waka hé" its time for africa
    [waka waka hé][its time][for africa]$ printf "[%s %s]" $(echo 'waka "waka hé" its time for africa')
    [waka "waka][hé" its][time for][africa ]$
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 539
    Points : 19 361
    Points
    19 361
    Par défaut
    bon. tu démontres que les guillemets perdent leur effet "groupant", et qu'ils sont un caractère comme un autre, entre apostrophes.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  13. #33
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 631
    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 631
    Points : 30 865
    Points
    30 865
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    ...et printf affiche simplement (selon le format indiqué) deux par deux.
    Oui c'est ça, deux par deux. Et quelque part il doit bien boucler pour les prendre deux par deux ces élements. C'est à ça que je pensais.
    Elle aurait été "moins intelligente" tu l'appelais printf "[%s] [%s]-" 123 456 789 101 elle t'aurait affiché le premier "[123]-" puis le reste d'un bloc.
    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]

  14. #34
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 107
    Points : 33
    Points
    33
    Par défaut
    Merci encore

  15. #35
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 631
    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 631
    Points : 30 865
    Points
    30 865
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par judkil Voir le message
    Merci encore
    Mouais. Encore une discussion qui se termine en eau de boudin. Au final on ne saura jamais le pourquoi du comment et surtout le rôle de "DMP" vis à vis de "dump donne explicite_pose_name-dump.txt"
    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]

  16. #36
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 107
    Points : 33
    Points
    33
    Par défaut
    DMP est l'alias de dump, pour ne pas écrire des fichiers à nom à rallonge. Il est plus simple d'utiliser l’abréviation à trois lettres dans le nom. Le fichier "explicite_pose_name-dump.txt " qui contient des informations en rapport avec la structure chimique du dump.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 539
    Points : 19 361
    Points
    19 361
    Par défaut
    nous, on le comprend (une fois qu'on a le contexte), mais un programme informatique ne le peut pas sans une "table d'équivalence".
    et s'il existe une table d'équivalence, alors pourquoi utiliser deux autres fichiers ?!

    la prochaine fois, expose simplement ton problème au lieu de faire des "périphrases" simplicistes, qui finalement ne simplifient pas la recherche d'une solution robuste et constructive.
    « un problème clairement exposé est à moitié résolu. »
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  18. #38
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par papajoker Voir le message
    puisque alias -> nom, le plus simple aurait été de créer directement un seul fichier (si possible ?) de clé ,valeur

    Citation Envoyé par judkil Voir le message
    Je fais de la biochimie sur ordinateur, le petit nom du dUMP (désoxyuridine monophosphate) dans les fichiers de coordonnées de molécules est DMP.
    Le petit nom de benza (acide benzoique) dans les fichiers de coordonnées de molécules est BEZ.
    Je suis d'accord avec papajoker.

    Il me semble plus pratique et plus prudent d'avoir un seul fichier qui précise, pour un nom abrégé (comme "BEZ"), quel est le nom complet correspondant (comme "benza").
    Le séparateur peut être ce que tu veux (espace, tabulation, signe "=" ou ":", etc.).
    De cette manière, si tu ajoutes ou retires un élément, tu as à manipuler un seul fichier et aucun risque de décalage.
    Tu peux même facilement mettre des commentaires dans le fichier (alors qu'avec 2 fichiers...).

    Ensuite, l'interprétation est simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $ cat alias-nom.txt
     
    DMP dump
    BEZ benza
     
    $ while read -r alias nom; do
        echo "Pour ${alias}, utiliser explicite_pose_name-${nom}.txt"
    done
     
    Pour DMP, utiliser explicite_pose_name-dump.txt
    Pour BEZ, utiliser explicite_pose_name-benza.txt
    Et si on obtient la clé d'une autre manière (par exemple extraite du fichier de coordonnées de molécules), on peut la retrouver dans le fichier de correspondance:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $ cat ./test2.sh
    #!/bin/bash
     
    cle=$1
    echo "Vous avez choisi la clé '$cle'"
    nom=$(grep "^$cle " alias-nom.txt | sed -e "s/^$cle //")
    echo "Pour ${cle}, utiliser explicite_pose_name-${nom}.txt"
     
    $  ./test2.sh DMP
    Vous avez choisi la clé 'DMP'
    Pour DMP, utiliser explicite_pose_name-dump.txt
    Désolé de faire grep+sed, je ne maîtrise toujours pas très bien les "sed -n" avec "p"...
    et je trouve ça beaucoup plus facile à lire.
    Quant à l'efficacité, si c'est répété un million de fois, il vaudra peut-être mieux le coder en C...

  19. #39
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 631
    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 631
    Points : 30 865
    Points
    30 865
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par judkil Voir le message
    Citation Envoyé par jack-ft Voir le message
    Il me semble plus pratique et plus prudent d'avoir un seul fichier qui précise, pour un nom abrégé (comme "BEZ"), quel est le nom complet correspondant (comme "benza").
    C'est d'ailleurs le premier principe dans la normalisation des base de données. Si tu as deux tables reliées 1-1 alors ça veut dire que tu peux mettre tout dans une seule table.

    Citation Envoyé par jack-ft Voir le message
    Désolé de faire grep+sed, je ne maîtrise toujours pas très bien les "sed -n" avec "p"...
    Ok c'est dommage mais c'est pas super grave (de mon point de vue). Mais pense aussi à fgrep plus rapide (fast grep).

    Citation Envoyé par jack-ft Voir le message
    Quant à l'efficacité, si c'est répété un million de fois, il vaudra peut-être mieux le coder en C...
    Euh... Tu as d'autres langages (exemple Python), plus simple que le C pour coder ce genre de travail et qui n'ont pas à rougir de leurs performances...
    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]

  20. #40
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 266
    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 266
    Points : 12 681
    Points
    12 681
    Par défaut
    Citation Envoyé par jack-ft Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $ cat ./test2.sh
    #!/bin/bash
     
    cle=$1
    echo "Vous avez choisi la clé '$cle'"
    nom=$(grep "^$cle " alias-nom.txt | sed -e "s/^$cle //")
    echo "Pour ${cle}, utiliser explicite_pose_name-${nom}.txt"
     
    $  ./test2.sh DMP
    Vous avez choisi la clé 'DMP'
    Pour DMP, utiliser explicite_pose_name-dump.txt
    Désolé de faire grep+sed, je ne maîtrise toujours pas très bien les "sed -n" avec "p"...
    Pas grave, on peut le faire uniquement avec grep:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nom=$(grep -oP "^$cle \K.*" alias-nom.txt)
    Cordialement.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. Structure en boucle des fichiers plats.
    Par Domingo60 dans le forum SQL*Loader
    Réponses: 1
    Dernier message: 15/10/2010, 15h29
  2. Callback, structures et boucle
    Par cb450 dans le forum GTK+ avec C & C++
    Réponses: 20
    Dernier message: 23/10/2009, 15h09
  3. Commande Structure et boucle FOR
    Par angelevil dans le forum Windows Forms
    Réponses: 2
    Dernier message: 30/08/2009, 02h10
  4. [AC-2007] Structure de boucle
    Par louroulou dans le forum VBA Access
    Réponses: 3
    Dernier message: 26/08/2009, 10h15
  5. [Débutant] Structure et boucles
    Par rob408231 dans le forum MATLAB
    Réponses: 2
    Dernier message: 05/04/2009, 21h30

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