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 :

awk bash quotes syntaxerror


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 3
    Par défaut awk bash quotes syntaxerror
    Bonjour,

    un code valant mieux qu'un long discourt, venant plus loin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    # echo 10/28/2009,13:35:01 | awk -v teatimeto5=$(expr $(date -d "17:00:00" +%s) - 300) 'BEGIN {FS=","} \ 
    {print "\n 5 mins avant le the (epoch) : " teatimeto5 "\n jour echo : " $1 "\n heure echo :" $2 "\n"} \                          
    {var=("'"$(date)"'")} {print  var}'
     
     5 mins avant le the (epoch) : 1256745300
     jour echo : 10/28/2009
     heure echo :13:35:01
     
    mercredi 28 octobre 2009, 14:54:35 (UTC+0100)
    Pas de problème jusque là, j'obtiens un résultat sans erreur.

    Mais je ne veux pas en rester là : J'essaie de re-injecter mes variables $1 $2 provenant de l'echo via le awk (ou vice-versa) dans la dernière commande 'date'. Quelque chose comme 'date -d $1 $2 +%s' mais avec les quotes qui vont bien. Et là, c'est le drame .
    Le but à demi caché est de savoir si le format (date,heure) en entrée est avant ou après l'heure du thé du jour en soustrayant les valeurs epoch.

    J'ai essayé de simplifier le contexte et vous demande d'être tolèrent quant à mon niveau. Quelqu'un peut-il m'aider ?

    Cordialement,

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Par défaut
    Hello,

    Un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    echo "10/28/2009,13:35:01" | awk -v teatimeto5=$(expr $(date -d "17:00:00" +%s) - 300) '
      BEGIN   {FS=","} 
      {
        print "\n 5 mins avant le the (epoch) : " teatimeto5 "\n jour echo : " $1 "\n heure echo :" $2 "\n"
        sprintf("date -d \"%s %s\" ", $1, $2) | getline dte
        print dte
      }'

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 3
    Par défaut
    Bonjour ripat,

    Et merci pour votre prompte réponse.
    Je n'ai pas encore abordé le getline ("The getline command is used in several different ways and should not be used by beginners.") Mais j'y vais de ce pas.

    Le résultat de la commande me donne "awk: line 5: syntax error at or near print"
    En digressant, j'obtiens cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    # echo "10/28/2009,13:35:01" | awk -v teatimeto5=$(expr $(date -d "17:00:00" +%s) - 300) ' \
      BEGIN   {FS=","} \
      { print "\n 5 mins avant le the (epoch) : " teatimeto5 "\n jour echo : " $1 "\n heure echo :" $2 "\n" \
        sprintf("date -d \"%s %s\" ", $1, $2) | getline dte }' 
    /bin/sh: 0: command not found
    Il nous faut un +%s à la fin de la commande date pour une saisie valide. Hélas +%s est à nouveau une indication de formatage. C'est donc à nouveau le drame .

    J'ai tenté des syntaxes non avouables aussi je remets le cas de base avec la syntaxe naïve au niveau de sprintf("date.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    # echo "10/28/2009,13:35:01" | awk -v teatimeto5=$(expr $(date -d "17:00:00" +%s) - 300) ' \
      BEGIN   {FS=","} \
      { print "\n 5 mins avant le the (epoch) : " teatimeto5 "\n jour echo : " $1 "\n heure echo :" $2 "\n" \
        sprintf("date -d \"%s %s\" +%s ", $1, $2) | getline dte }'
    awk: run time error: not enough arguments passed to sprintf("date -d "%s %s" +%s ")
            FILENAME="-" FNR=1 NR=1
    Cordialement,

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Par défaut
    Pour entrer le caractère % dans un format printf, il faut le doubler.

    man awk

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
       The printf Statement
           The AWK versions of the printf statement and sprintf() function (see below) accept the following conversion specification formats:
    
    (...)
           %%      A single % character; no argument is converted.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 3
    Par défaut
    Bonsoir,

    Merci pour votre aide précieuse.

    Cordialement,

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

Discussions similaires

  1. [AWK-BASH] Vérification dans un fichier
    Par seanbean dans le forum Linux
    Réponses: 3
    Dernier message: 12/12/2010, 02h28
  2. [BASH] Insertion de quotes dans une chaîne
    Par Alfred456654 dans le forum Linux
    Réponses: 7
    Dernier message: 21/07/2009, 13h55
  3. AWK, probleme de quote dans fonction awk.
    Par damien_27 dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 18/03/2009, 18h51
  4. [bash] utilisation de CAT/AWK pour parser un fichier CSV
    Par arnaudperfect dans le forum Shell et commandes GNU
    Réponses: 32
    Dernier message: 25/07/2007, 23h34
  5. probleme de récupération de variable en bash avec awk
    Par avogadro dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 24/12/2006, 01h31

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