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 :

Variable dans AWK


Sujet :

Shell et commandes POSIX

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Auditeur informatique
    Inscrit en
    Février 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Qatar

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2013
    Messages : 4
    Par défaut Variable dans AWK
    Bonjour.

    J'aimerais utiliser une variable (e.g : today dans AWK e.g) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #!/bin/bash
    today=`date "+%Y%m%d"`
     
    awk -F"," '($2==$today)  {print $0}'  test.txt

    Mais ça ne marche pas, s'il vous plaît puis-je avoir de l'aide ?

    Merci.

  2. #2
    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
    "print $0" n'est pas indispensable ici car c'est l'action par défaut d'awk.
    Voici deux façons de passer une variable à awk:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #!/bin/bash
    today=$(date "+%Y%m%d")
     
    awk -F "," '$2 == '$today' ' test.txt
    ou mieux:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ...
    awk -F "," -v today=$today '$2 == today' test.txt

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Auditeur informatique
    Inscrit en
    Février 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Qatar

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2013
    Messages : 4
    Par défaut Rappel
    Citation Envoyé par MariaAbid Voir le message
    Bonjour
    J'aimerais utiliser une variable (e.g : today dans AWK e.g :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #!/bin/bash
    today=`date "+%Y%m%d"`
     
    awk -F"," '($2==$today)  {print $0}'  test.txt

    mais çà ne marche pas, s'il vous plait puis-je avoir de l 'aide ?


    Merci


    Bonjour
    S'il vous plait , une reponse
    Merci

  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
    Citation Envoyé par MariaAbid Voir le message
    Bonjour
    S'il vous plait , une reponse
    Merci
    J'ai déjà donné une réponse. Si le problème n'est pas résolu avec ma suggestion, il faudrait nous donner un échantillon de ce qu'il y a dans test.txt

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Auditeur informatique
    Inscrit en
    Février 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Qatar

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2013
    Messages : 4
    Par défaut échantillon
    Citation Envoyé par jlliagre Voir le message
    J'ai déjà donné une réponse. Si le problème n'est pas résolu avec ma suggestion, il faudrait nous donner un échantillon de ce qu'il y a dans test.txt
    Bonjour
    Voici un échantillon ce qu'il y'a dans le fichier test.txt

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    33423424,16,,2013-03-19
    33646240,16,,2013-03-19
    33525510,16,,2013-03-19
    33401025,16,,2013-03-19
    33925853,16,,2013-03-19
    33760755,16,,2013-03-19
    33878690,16,,2013-03-19
    33854147,16,,2013-03-19
    33673985,16,,2013-03-19

    Merci

  6. #6
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Par défaut
    Bonjour.

    As-tu simplement essayé de comprendre et d'adapter la première suggestion de jlliagre ? Si oui quel est le problème rencontré ?

    Il faut essayer de faire davantage d'effort de compréhension et de recherche et aussi faire un effort d'explication.

    Là tu essayes de remplacer la 2ème colonne dans ton premier extrait de code... il faut savoir que l'indice des colonnes ne commence pas à 0 mais à 1. Du coup si tu cherche à remplacer la colonne vide (la 3ème donc) par la date du jour, voici une solution possible :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    [idriss@hp-dv6:~]$ cat test.txt 
    33423424,16,,2013-03-19
    33646240,16,,2013-03-19
    33525510,16,,2013-03-19
    33401025,16,,2013-03-19
    33925853,16,,2013-03-19
    33760755,16,,2013-03-19
    33878690,16,,2013-03-19
    33854147,16,,2013-03-19
    33673985,16,,2013-03-19
    [idriss@hp-dv6:~]$ awk -F "," -v today=$(date "+%Y-%m-%d") '{print $1","$2","today","$4}' test.txt
    33423424,16,2013-03-17,2013-03-19
    33646240,16,2013-03-17,2013-03-19
    33525510,16,2013-03-17,2013-03-19
    33401025,16,2013-03-17,2013-03-19
    33925853,16,2013-03-17,2013-03-19
    33760755,16,2013-03-17,2013-03-19
    33878690,16,2013-03-17,2013-03-19
    33854147,16,2013-03-17,2013-03-19
    33673985,16,2013-03-17,2013-03-19
    Si toutefois tu souhaite remplacer la date de la 4ème colonne par celle du jour, ben tu fait le même genre de traitement sauf que tu remplace la 4ème colonne à la place de la 3ème. Pareil si c'était vraiment la deuxième colonne (celle qui vaut "16") tu remplace la 2ème au lieu de la 3ème qui est vide (pas très cohérent).

    Tu notera que j'ai pris le même format que la date de la 4ème colonne et non pas celui de ton code de départ. Tu notera aussi que awk n'est pas la seule solution (et pas forcemment la plus adaptée à toute les situations) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    [idriss@hp-dv6:~]$ sed "s/,,/,"$(date "+%Y-%m-%d")",/g" test.txt 
    33423424,16,2013-03-17,2013-03-19
    33646240,16,2013-03-17,2013-03-19
    33525510,16,2013-03-17,2013-03-19
    33401025,16,2013-03-17,2013-03-19
    33925853,16,2013-03-17,2013-03-19
    33760755,16,2013-03-17,2013-03-19
    33878690,16,2013-03-17,2013-03-19
    33854147,16,2013-03-17,2013-03-19
    33673985,16,2013-03-17,2013-03-19
    Voilà, tu as de quoi te débrouiller même si on manque de détails. Tu as la méthode pour passer une variable à awk, a toi d'adapter en conséquence.

    Cordialement,
    Idriss

  7. #7
    Futur Membre du Club
    Femme Profil pro
    Auditeur informatique
    Inscrit en
    Février 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Qatar

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2013
    Messages : 4
    Par défaut
    Merci pour votre réponse , mais je voudrais chercher les lignes qui ont la quatrième colonne (la date) égale a la date actuelle

  8. #8
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk -F, '$4 =="'$(date +%Y-%m-%d)'"' test.txt

  9. #9
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Par défaut
    Ou encore la solution citée dans post de jlliagre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk -F "," -v today=$today '$2 == today' test.txt
    Sauf que $2 est à remplacer par $4, j'espère que c'est pas ce petit truc qui t'a reconduit vers nous pour nous dire "ça marche pas"

Discussions similaires

  1. Awk: récupérer les variables dans un fichier csv.
    Par vandman dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 04/11/2014, 09h20
  2. Réponses: 1
    Dernier message: 24/02/2011, 10h37
  3. Variable de shell affectee dans awk
    Par gangsoleil dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 17/12/2009, 14h30
  4. [Script KSH]Afficher une variable dans awk
    Par Rizzen dans le forum Linux
    Réponses: 3
    Dernier message: 11/05/2009, 13h51
  5. [syntaxe] Gerer les variables dans une requete
    Par rastapopulos dans le forum MS SQL Server
    Réponses: 12
    Dernier message: 15/04/2003, 12h53

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