Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/01/2011, 15h56   #1
Invité de passage
 
Inscription : janvier 2011
Messages : 2
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 2
Points : 0
Points : 0
Par défaut Vérifier des valeurs dans un fichier

Bonjour,

Comment réaliser un script shell qui me renvoie le message "defaut onduleur" si les valeurs 16, 24 ou 28 sont trouvées dans la colonne 3 (après la date et l'heure) du fichier texte ci joint,

Merci de votre aide

un novice
Fichiers attachés
Type de fichier : txt 20110109.txt (31,4 Ko, 13 affichages)
powadoor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2011, 19h27   #2
Responsable Modération
 
Avatar de ok.Idriss
 
Homme Idriss Neumann
Consultant en SSII et étudiant au CNAM Paris (ingénieur SI)
Inscription : février 2009
Messages : 1 978
Détails du profil
Informations personnelles :
Nom : Homme Idriss Neumann
Âge : 21
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Consultant en SSII et étudiant au CNAM Paris (ingénieur SI)

Informations forums :
Inscription : février 2009
Messages : 1 978
Points : 5 988
Points : 5 988
Bonsoir.

Voici un début de script qui devrait pouvoir t'aider :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/bin/bash
 
FICHIER=fichier.txt
 
cat $FICHIER | while read ligne # on parcours le fichier ligne par ligne
do
    if [ "$ligne" = "" ] # si la ligne est vide ( = fin du fichier)
    then
        exit # on stop la boucle
    else
        set -- $ligne # on éclate la ligne
        # $1 = élément de la première colonne
        # $2 = élément de la deuxième colonne
        # ...
    fi    
done
Cordialement,
Idriss
ok.Idriss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2011, 20h33   #3
Invité de passage
 
Inscription : janvier 2011
Messages : 2
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 2
Points : 0
Points : 0
Par défaut Merci

Merci le script suivant fonctionne


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/bin/bash
 
FICHIER=fichier.txt
 
cat $FICHIER | while read ligne # on parcours le fichier ligne par ligne
do
    if [ "$ligne" = "" ] # si la ligne est vide ( = fin du fichier)
    then
        exit # on stop la boucle
    else
        set -- $ligne # on éclate la ligne
 
	if [ $3 = 16 ] # test des valeurs
    then echo alarme onduleur
        elif [ $3 = 25 ]
    then echo alarme onduleur
	elif [ $3 = 28 ]
    then echo alarme onduleur
 
	fi
        # ...
    fi    
done
powadoor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2011, 22h40   #4
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 068
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 068
Points : 4 140
Points : 4 140
Il n'y a pas besoin de tester la fin du fichier : cat envoie la totalité du fichier, quand il n'y a plus de ligne, la boucle s'arrête.
Code :
1
2
3
4
5
6
#!/bin/bash
 
cat FICHIER.TXT | while read line
do set -- $line
   (( $6 == 16 || $6 == 24 || $6 == 28 )) && echo "alarme onduleur"
done
$6, car la troisième colonne du fichier présenté ne contient que des 5, sauf la trois cent sixième
...
?
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h29.


 
 
 
 
Partenaires

Hébergement Web