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] débutant et problème


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Ingénieur réseau et sécurité / Consultant
    Inscrit en
    Août 2005
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur réseau et sécurité / Consultant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 1 068
    Par défaut [AWK] débutant et problème
    Bonjour à tous,

    dans le cadre d'un cours, je dois faire des petits script combinant le bash et le AWK et là je me trouve confronté a un soucis. Le script ci-dessous fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #!/bin/sh
     
    # This script will generate a html page with the output with analyze-apache-log.sh
    #-------------------------------------------------------------------------------------------------------------------
     
    echo "<html><head><title>WebAnalyzeLog - "$1"</title></head>" > "$2"html_log.html
    echo "<body><b>The ten most popular pages in the file "$1" were</b><br /><br /><table border="0"><tr><td><b>Number</b></td><td><b>URL</b></td></tr>" >> "$2"html_log.html
    ./analyze-apache-log.sh $1 | awk 'NR > 9 && NR < 20 {printf "<tr><td>"$1"</td><td>"$2"</td></tr>" }' >> "$2"html_log.html 
    echo "</table></body></html>" >> "$2"html_log.html
    Ce code prend comme argument un fichier de log ainsi qu'un dossier de destination et j'utilise un autre script (analyze-apache-log.sh) pour traiter un fichier de log et je met tout sa dans une page HTML.

    Maintenant je dois faire la même chose seulement je ne donne plus en paramètre le fichier de log mais juste la destination et dans mon fichier je dois créer une variable qui contient le dossier où se trouvent les LOG (il y en a plusieurs) et je dois générer une page HTML comme avant mais pour chaque host. Voici ce que j'ai comme boucle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ls ./log/ | awk '{for(i=1; i<=NF; i++) ??? }'
    Je ne vous ai pas mis le code complet car je test en ligne de commande mais ma question est qu'à la place des ??? j'aimerai appeler mon fichier analyze-apache-log.sh et je n'y arrive pas.

    merci de m'aider

  2. #2
    Membre éprouvé
    Homme Profil pro
    Ingénieur réseau et sécurité / Consultant
    Inscrit en
    Août 2005
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur réseau et sécurité / Consultant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 1 068
    Par défaut
    En faite voici ce que j'aimerai faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ls ./log/ | awk '{for(i=1; i<=NF; i++)print $1}' > test.txt | ./analyze-apache-log.sh awk '{print $NF}' test.txt
    dans mon fichier test.txt, j'ai un fichier .log sur chaque ligne donc sa c'est bon et ensuite j'aimerai déjà essayer de donner chaque ligne comme paramètres à mon fichier .sh mais je ne comprend pas comment faire

  3. #3
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 660
    Par défaut
    Bonjour,

    il ne faut pas utiliser ls dans les scripts : imagine qu'un de tes fichiers s'appelle "mon fichier"...
    en ligne de commande, c'est pratique
    dans un script, c'est pourri.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk '{for(i=1; i<=NF; i++)print $1}'
    ça veut dire écrire le premier champs de la ligne autant de fois qu'il y a de champs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #!/bin/bash
     
    laousontmesLogs=./log
     
    for log in $laousontmeslogs/*
    do echo "$log"
    done
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

Discussions similaires

  1. [Débutant][JScrollePane] Problème d'affichage
    Par flzox dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 12/12/2004, 16h36
  2. [Graphisme][Débutant(e)] Problème sur repaint()
    Par Katyucha dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 08/10/2004, 17h12
  3. [Débutant][Phppgadmin] problème avec les types
    Par PoY dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 19/08/2004, 17h06
  4. Réponses: 5
    Dernier message: 19/08/2004, 11h11
  5. [débutant] [lomboz] Problème deploy.web.xml
    Par cdrikou dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 29/04/2004, 10h47

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