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 POSIX Discussion :

[awk] if then else


Sujet :

Shell et commandes POSIX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut [awk] if then else
    Bonsoir,

    je suis vraiment bloqué j'essaie d'avancé comme je peux mais je n'arrive pas à faire cette condition if then else sur le awk,
    pouvez vous m'expliquer ce qui ne vas pas avec ce script
    j'aimerai que si il trouve le $2 il m'envoie le print de celui-ci, et si il ne trouve rien qu'il me renvoie no match :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for V in "PRIJAM DU TERME_0001" "TESS DES BEAUX_0003" "UNIVERS DE LA FAYE_0002" "Newtext"
    do find /Users/KAB/Desktop/DeveloppezCom/Renommage/Images/ -name "${V}.*" | awk -F . { [[ '${#2} > 0 ]] && '{print $2}' || '{print "no match"}' }
    done
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  2. #2
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    re,

    je suis peut être à peu de chose de la solution, mais je ne trouve tjs pas, y a t-il un âme charitable pour m'aider;
    mon dernier code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for V in "PRIJAM DU TERME_0001" "TESS DES BEAUX_003" "UNIVERS DE LA FAYE_0002" "Newtext"
    do find /Users/KAB/Desktop/DeveloppezCom/Renommage/Images/ -name "${V}.*" | awk -F . '{if ($2>0) print $2; else print "no match"}'
    done
    mon résultat avec ce code est :
    jpg
    jpg
    txt


    mais devrait être en réalité (ce que je n'arrive pas à obtenir pour le moment) :
    jpg
    no match
    jpg
    txt
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  3. #3
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    bonjour,

    je crois avoir compris pourquoi "no match" ne peut pas apparaître dans les résultats,
    car comme le nom du fichier ne peut correspondre à aucun des noms des fichiers dans le dossier source, le résultat du awk ne pourra renvoyer le résultat

    dans ce cas là comment puis je faire/quelles sont les modifications à faire avec mon code dans le post précédent, afin que "no match" puisse apparaitre dans les résultats ??

    PS : je vois qu'il n y a pas grand monde qui passe, mais si à tout hazard une âme charitable s'arrête sur ce post pour m'aider, ça serait cool.
    j'ai écumé un très grand nombre de recherches internet sans grand résultat - ça avance à pas de fourmis

    Ryu
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  4. #4
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    La logique de ce que tu veux faire n'est pas très claire mais voilà ce qui devrait quand même faire ton bonheur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for V in "PRIJAM DU TERME_0001" "TESS DES BEAUX_003" "UNIVERS DE LA FAYE_0002" "Newtext" ; do
        find /Users/KAB/Desktop/DeveloppezCom/Renommage/Images/ -name "${V}.*"  |  awk -F . '{found=1}END{print found?$2:"not found"}'
    done

  5. #5
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Bonsoir,

    Merci beaucoup c'est exactement ça, ça marche nickel
    par contre malgré toutes mes recherches, je ne suis jamais tombé sur found.
    Dans le code je suppose que BEGIN est sous entendu et après le END on a l'une des 2 réponses (séparé par les 2 points) selon la situation.
    Mais j'ai un peu du mal à comprendre la logique du code => found=1
    j'ai fais un test pour savoir si un fichier existe est le résultat est 0 quand c'est ok et 1 quand il existe pas.

    j'ai néanmoins besoin de petites explications pour ma compréhension comme le monde du terminal est tout nouveau pour moi svp !

    merci

    Ryu
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  6. #6
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    Citation Envoyé par RyuAutodidacte Voir le message
    par contre malgré toutes mes recherches, je ne suis jamais tombé sur found.
    Normal, c'est un nom « arbitraire » de variable, j'aurais pu mettre toto=1.

    Dans le code je suppose que BEGIN est sous entendu
    Non, il n'y a pas besoin de BEGIN.

    et après le END on a l'une des 2 réponses (séparé par les 2 points) selon la situation.
    Oui, dans le bloc END, j'utilise un opérateur ternaire, décrit par exemple ici (en C car c'est de ce langage qu'il provient).

    Mais j'ai une peu du mal à comprendre la logique du code => found=1
    Quand le find sort quelque chose, le fichier satisfait au test demandé, il n'est pas nécessaire de faire autre chose, le bloc awk met la variable à 1 dès que find à trouvé un fichier.

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

Discussions similaires

  1. [Débutant] if...then...else
    Par jive dans le forum ASP
    Réponses: 5
    Dernier message: 16/09/2005, 14h11
  2. [TagLib] Structure if then else
    Par mush_H dans le forum Taglibs
    Réponses: 5
    Dernier message: 19/07/2005, 15h31
  3. If Then Else
    Par Piout dans le forum MS SQL Server
    Réponses: 13
    Dernier message: 24/02/2005, 16h09
  4. IF THEN ELSE imbriqués
    Par nuke_y dans le forum Oracle
    Réponses: 2
    Dernier message: 15/11/2004, 14h57
  5. [CR 7] [débutante] pb avec if then else
    Par xs_nady dans le forum Formules
    Réponses: 8
    Dernier message: 28/05/2004, 15h36

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