Scripts shell - exercice 2 - Compter les informations dans un fichier et présenter les résultats

Titre : Compter les informations dans un fichier et présenter les résultats

Matériel :
1. Voici le fichier à traiter (créez un fichier appeler donnees2.csv sur votre machine) :

GROUPE1;APPLI1;HOSTNAME1;STATUS1;LEVEL1; Alerte de type 1;20080101
GROUPE2;APPLI2;HOSTNAME2;STATUS2;LEVEL2; Alerte de type 2;20080102
GROUPE3;APPLI3;HOSTNAME3;STATUS3;LEVEL3; Alerte de type 3;20080103
GROUPE4;APPLI4;HOSTNAME4;STATUS4;LEVEL4; Alerte de type 4;20080104
GROUPE5;APPLI5;HOSTNAME5;STATUS5;LEVEL5; Alerte de type 5;20080105
GROUPE61;APPLI61;HOSTNAME61;STATUS6;LEVEL6; Alerte de type 6;20080106
GROUPE7;APPLI4;HOSTNAME4;STATUS7;LEVEL7; Alerte de type 7;20080107
GROUPE8;APPLI8;HOSTNAME8;STATUS4;LEVEL4; Alerte de type 8;20080108
GROUPE7;APPLI4;HOSTNAME3;STATUS9;LEVEL4; Alerte de type 9;20080109

Résultat à fournir :
Ecrire un script appelé script2.sh qui, sans réaliser de fichier temporaire ou intermédiaire, va permettre de donner sur la sortie standard (écran = stdout) le résultat suivant (je vous ai indiqué entre guillemets ce qui est dynamique) :
Nous avons eu "9" alertes ce mois.
Parmi ces alertes on a eu "3" alertes de niveau LEVEL4.
Ces alertes de niveau LEVEL4, avaient comme commentaires :
"
Alerte de type 4
Alerte de type 8
Alerte de type 9
"

Indications :
Commandes pouvant être utilisées : grep, cat, wc, cut (de préférence ou awk, plus complexe), echo ou print
L’opérateur : | (pipe (fr: tube) se prononce “paillepe”)

Questions à se poser :
1. Pensez bien “si je veux tel résultat, je l’obtiens en récupérant l’information de la colonne ou de la ligne …. Si je veux savoir telle chose, je l’obtiens en lisant le fichier et en comptant telle information… etc.”
2. Rédigez votre script en vous basant sur le modèle fourni dans la partie 1.
3. On doit être sûr que le décompte de la chaine de caractères “LEVEL4″ est bien issu de la colonne indiquant les niveaux, comment procéder ?
4. Le fichier de départ est petit. Vérifiez vos résultats.

J’ai ajouté la solution de l’exercice 1 dans les commentaires de l’exercice 1.

Tagged with:

1 commentaire pour Scripts shell - exercice 2 - Compter les informations dans un fichier et présenter les résultats

  1. Correction :
    (aucune commande ne va à la ligne :
    #!/bin/sh
    #
    # @(#) Extraire et compter des informations
    # @(#) Utilisateur : utilisateur normal
    # @(#) Usage : sh script.sh
    #
    # liste des variables (si utilisées)
    MONFICHIER=donnees2.csv
    # on coupe le fichier sur une colonne avant de compter les lignes (bonne habitude)
    NBALERT=`cut -d";" -f1 $MONFICHIER | wc -l`
    # cela peut aussi s'écrire :
    # NBALERT=$(cut -d";" -f1 $MONFICHIER | wc -l)
    # on récupère la colonne qui contient les niveaux puis on cherche la chaine de caractère "LEVEL4" puis on compte les lignes
    NBLEVEL4=`cut -d";" -f5 $MONFICHIER | grep "LEVEL4"| wc -l`
    # les commandes
    # on appelle la valeur de notre variable NBALERT
    echo "On a eu $NBALERT alertes ce mois"
    # on appelle la valeur de notre variable NBLEVEL4
    echo "Parmi ces alertes on a eu $NBLEVEL4 alertes de niveau LEVEL4."
    echo "Ces alertes de niveau LEVEL4, avaient comme commentaires :"
    # En un, cut -d";" -f5,6 récupération des colonnes 5 et 6 du fichier
    # En deux , grep "LEVEL4" puis dans ces deux colonnes on garde uniquement les lignes contenant la chaine LEVEL4
    # En trois puis on récupère seulement la colonne 2 (parmi la 5 et la 6) donc la colonne qui contient les alertes.
    cut -d";" -f5,6 $MONFICHIER | grep "LEVEL4" | cut -d";" -f2
    # fin
    exit

    en mieux présenté :
    http://www.google.com/notebook/public/12617965857882522712/BDSIKQgoQ7vHfwJsj

Commenter

Trackbacks

Pour faire un trackback sur cet article : http://grepgrrl.org/2008/04/28/shell-exercice2/trackback/