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.
1 commentaire pour Scripts shell - exercice 2 - Compter les informations dans un fichier et présenter les résultats
Commenter
Trackbacks
Pour faire un trackback sur cet article : http://grepgrrl.org/2008/04/28/shell-exercice2/trackback/


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