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 :

Aide script .awk


Sujet :

Linux

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Aide script .awk
    Bonjour,

    Je fais appel à vous, car je cherche en faite, à l'aide d'un script awk, à extraire quelque mot d'un fichier de log.

    Ces mot (qui sont des protocoles), se trouvent a chaque fois en 5eme position sur toutes les lignes du fichier. J'arrive donc avec le script suivant a afficher tous les mots

    #! /bin/awk -f
    BEGIN {
    printf ("Mon script")
    }

    {
    $valeur = $5;
    printf ($valeur "\n");
    }
    Mon script est un peu compliqué avec la variable valeur, mais c'est parce que j'ai essayé quelque chose.

    Donc en tapant la commande : awk -f script.awk monfichierdelog.log
    J'obtient mes protocoles comme ceci :

    imapd-ssl:
    imapd-ssl:
    imapd-ssl:
    imapd-ssl:
    imapd-ssl:
    courierd:
    courierd:
    courieresmtp:
    courieresmtp:
    courierd:
    courierd:
    imapd-ssl:
    imapd-ssl:
    imapd-ssl:
    Ce que jevoudrais faire maintenant donc, c'est afficher une seul fois les protocole qui ont déja afficher. Par exemple n'afficher qu'une seul fois imapd-ssl etc... Pour avoir un truc comme ca :

    imapd-ssl:
    courieresmtp:
    courierd:
    J'ai cherché pas mal pas moyen de trouver, pour tant je suis sur que c'est simple.

    Merci de votre aide

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 296
    Points : 1 803
    Points
    1 803
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk -f script.awk monfichierdelog.log | sort | uniq
    devrait donner le bon resultat.
    Marc
    Slackware for ever ......
    BASH - KSH ( http://marcg.developpez.com/ksh/ )

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    J'ai testé, mais ca ne fonctionne pas.

    De plus, je souhaiterais que ma commande a taper reste : awk -f script.awk monfichierdelog.log

    Sans ajouter des options.

    Il faudrait donc que ces options soit directement intégré dans le script, je ne sais pas si c'est possible.

    Merci de ta réponse en tout cas

  4. #4
    Membre chevronné
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Points : 1 991
    Points
    1 991
    Par défaut
    salut,

    j'ai pas maintenant linux sous la main mais avec gawk.exe sous win:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk '!a[$5]++' monfichierdelog.log

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    J'ai essayé mais ça ne fonctionne toujours pas, tout est affiché.

  6. #6
    Membre habitué
    Homme Profil pro
    Dev C++, CUDA
    Inscrit en
    Mai 2005
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Nouvelle-Zélande

    Informations professionnelles :
    Activité : Dev C++, CUDA
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2005
    Messages : 83
    Points : 129
    Points
    129
    Par défaut
    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
     
    #! /bin/awk -f
    BEGIN {
       printf ("Mon script\n")
    }
     
    {
       valeur = $5;
       found=0;
       for (i in oldTab)
       {
          if (valeur == oldTab[i]) {found=1; break}
       }
       if (!found)
       {
          printf (valeur "\n");
          oldTab[NR] = valeur;
       }
    }
    Sachant que la solution MarcG est plus efficace sur les gros fichiers.

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    D'accord merci.

    Et sinon si je fait le script en shell, est-ce plus simple ?

    Avec des Grep je présume

Discussions similaires

  1. aide sur un script awk
    Par hbidak dans le forum Linux
    Réponses: 1
    Dernier message: 01/04/2010, 09h50
  2. aide script awk
    Par s@mson dans le forum Linux
    Réponses: 3
    Dernier message: 24/11/2007, 22h20
  3. Aide script perl
    Par donmamio dans le forum Langage
    Réponses: 10
    Dernier message: 08/08/2006, 17h34
  4. Aide script PHP
    Par popsantiago dans le forum Langage
    Réponses: 1
    Dernier message: 11/05/2006, 22h18
  5. [Oracle 8.1.7] Aide script
    Par fmoriet dans le forum Langage SQL
    Réponses: 1
    Dernier message: 10/02/2006, 12h27

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