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

Linux Discussion :

Extraire des valeurs d'un fichier avec AWK


Sujet :

Linux

  1. #1
    Membre habitué Avatar de Maillon
    Inscrit en
    Juin 2007
    Messages
    136
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juin 2007
    Messages : 136
    Points : 136
    Points
    136
    Par défaut Extraire des valeurs d'un fichier avec AWK
    Bonjour,

    je fais un script pour recuperer les données d'un fichier.

    le contenu de mon fichier ressemble à ça :
    wmmlb02: 2009-02-04 14:01:46,517 10.10.10.10 - +33010101010 HTTP_GET 9784304400@ N/A 200 2 false N/A - - - 29 eri 21091
    wmmlb02: 2009-02-04 14:01:46,517 10.10.10.10 - +33010101010 m_notifresp_ind 9784304400@ N/A 205 2 false N/A - - - 29 eri 21091
    wmmlb02: 2009-02-04 14:01:46,517 10.10.10.10 - +33010101010 m_notifresp_ind 9784304400@ N/A 207 2 false N/A - - - 10.10.10.10
    wmmlb02: 2009-02-04 14:01:46,517 10.10.10.10 - +33010101010 m_notifresp_ind 9784304400@ N/A 203 2 false N/A - - - 29 eri 21091
    wmmlb02: 2009-02-04 14:01:46,517 10.10.10.10 - +33010101010 m_notifresp_ind 9784304400@ N/A 202 2 false N/A - - - 29 eri 21091
    wmmlb03: 2009-02-04 14:15:33,585 10.10.10.10 - +33010101010 m_notification_ind 6342238308@ N/A 202 0 false N/A - - - 26 eii +332348349743/TYPE=PLMN
    wmmlb02: 2009-02-04 14:01:46,517 10.10.10.10 - +33010101010 HTTPsdfsdf_GET 9784304400@ N/A 200 2 false N/A - - - 29 eri 21091


    ce fichier contient des milliers de lignes comme ça.

    Ce que je voudrais c'est extraire le nombre de fois où dans le fichier il y a dans une ligne HTTP_GET ou notifresp_ind et sur ces lignes là le nombre de fois où il trouve la valeur 200 ou 202. HTTP_GET et notifresp_ind se trouve à $7 et la valeur 200 ou 202 se trouve à $10.

    Dans l'exemple du ci-dessus, le script devrait me retourner la 3.

    Voilà ce que j'ai commencer à faire :

    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
     
    #!/bin/sh 
     
    if [ -f result ] 
    then 
    rm result 
    fi 
     
    while read line; 
    do 
    echo $line > temp 
    awk -F" " '{ if ((( $7 = "notifresp_ind" ) || ( $7 = "HTTP_GET" )) && (( $10 == "200") || ( $10 == "202"))) print $7 
    , $10 }' temp >> result 
    done < ding 
    awk 'END {print NR}' result 
    exit
    Pouvez-vous me filer un coup de main ?

    Merci beaucoup.

    Cordialement,
    Aide ton prochain car à sa place tu aimerai bien qu'on t'aide.
    _
    Previously On My Life ...
    _
    Administrateur Réseaux et Systèmes.
    _

  2. #2
    Membre habitué Avatar de Maillon
    Inscrit en
    Juin 2007
    Messages
    136
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juin 2007
    Messages : 136
    Points : 136
    Points
    136
    Par défaut
    J'ai également essayer cette commande (merci jipicy) mais elle ne me retourne pas le bon résultat :
    awk '$7 ~ /HTTP_GET/ || $7 ~ /notifresp_ind/ && $10 ~ /200/ || $10 ~ /202/ {print $7}' ding

    Elle me retourne :
    machine@ssh$ awk '$7 ~ /HTTP_GET/ || $7 ~ /notifresp_ind/ && $10 ~ /200/ || $10 ~ /202/ {print $7}' ding
    HTTP_GET
    m_notifresp_ind
    m_notification_ind

    Ce qui n'est pas bon puisque moi je ne souhaite avoir que HTTP_GET et m_notifresp_ind.

    Merci.

    Cordialement,
    Aide ton prochain car à sa place tu aimerai bien qu'on t'aide.
    _
    Previously On My Life ...
    _
    Administrateur Réseaux et Systèmes.
    _

  3. #3
    Membre habitué Avatar de Maillon
    Inscrit en
    Juin 2007
    Messages
    136
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juin 2007
    Messages : 136
    Points : 136
    Points
    136
    Par défaut
    Donc en fait la solution est (pour ceux que ça pourrait intéresser) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    awk '($7 ~ /HTTP_GET/ || $7 ~ /notifresp_ind/) && ($10 ~ /200/ || $10 ~ /202/) {print $7}' fichier
    Merci quand même d'avoir lu mon sujet.

    Cordialement,
    Aide ton prochain car à sa place tu aimerai bien qu'on t'aide.
    _
    Previously On My Life ...
    _
    Administrateur Réseaux et Systèmes.
    _

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

Discussions similaires

  1. Extraire des valeurs d'un fichier, help me !
    Par vincent1989 dans le forum R
    Réponses: 5
    Dernier message: 12/11/2012, 18h52
  2. Extraire des valeurs d'un fichier
    Par jal13 dans le forum Fortran
    Réponses: 2
    Dernier message: 14/12/2010, 16h29
  3. Extraire des données d'un fichier .csv avec C++
    Par cre31400 dans le forum C++Builder
    Réponses: 14
    Dernier message: 08/07/2008, 10h25
  4. Extraire des valeurs d'un fichier txt
    Par boby35 dans le forum Octave
    Réponses: 5
    Dernier message: 16/04/2008, 12h05
  5. Réponses: 11
    Dernier message: 31/03/2008, 19h18

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