#1 Le 07/11/2012, à 16:57
- hydro_90
test bash, afficher un fichier s'il contient un motif
Bonjour,
Je souhaite faire un script pour vérifier si ERREUR est présent dans deux fichiers.
Si c'est le cas il affiche le contenu du fichier ou des deux fichiers:
En gros si ERREUR est présent dans fichier1.txt il affiche le contenu de fichier1.txt, si ERREUR est présent dans fichier2.txt il affiche le contenu de fichier2.txt, si fichier1.txt et fichier2.txt contiennent ERREUR le contenu des deux fichiers sont affichés.
J'ai fait un truc comme ça mais ça marche pas bien, quelqu'un à une idée?
#!/bin/bash
VAR1=$(grep 'ERREUR' fichier1.txt)
VAR2=$(grep 'ERREUR' fichier2.txt)
if [ -n "$VAR1" ] ; then
cat fichier1.txt ;
else
if [ -n "$VAR2" ] ; then
cat fichier2.txt
else
exit 0
fi
fi
Merci par avance
edit modo : titre
Dernière modification par nesthib (Le 09/11/2012, à 19:05)
Hors ligne
#2 Le 07/11/2012, à 17:18
- Postmortem
Re : test bash, afficher un fichier s'il contient un motif
Salut,
for fic in fichier1.txt fichier2.txt
do
if grep -q "ERREUR" "$fic"
then
cat "$fic"
fi
done
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
#3 Le 07/11/2012, à 17:24
- louis94
Re : test bash, afficher un fichier s'il contient un motif
Bonjour,
Ta syntaxe et ta manière d'écrire les if sont corrects, ce qui ne va pas, c'est la structure. La voici en pseudo-code :
si ERREUR dans fichier 1 :
afficher fichier 1
sinon :
si ERREUR dans fichier 2 :
afficher fichier 2
Imaginons que ERREUR est présent dans les deux fichiers (c'est là que ça coince, non?). Alors ton premier test est vrai ; on affiche le contenu du premier fichier. On ne va par contre pas effectuer ce qu'il y a dans le else, donc même pas vérifier le deuxième if.
Voici un code fonctionnel :
#!/bin/bash
VAR1=$(grep 'ERREUR' fichier1.txt)
VAR2=$(grep 'ERREUR' fichier2.txt)
if [ -n "$VAR1" ] ; then
cat fichier1.txt
fi
if [ -n "$VAR2" ] ; then
cat fichier2.txt
fi
Louis
NB : Le "else if" de C/C++/Java/... s'écrit "elif" en Bash.
Hors ligne
#4 Le 08/11/2012, à 10:45
- hydro_90
Re : test bash, afficher un fichier s'il contient un motif
Re, et merci pour votre aide; je vais tester tout ça aujourd'hui
Hors ligne
#5 Le 08/11/2012, à 12:50
- hydro_90
Re : test bash, afficher un fichier s'il contient un motif
Ok ça marche bien avec le script :
for fic in fichier1.txt fichier2.txt
do
if grep -q "ERREUR" "$fic"
then
cat "$fic"
fi
done
Merci à vous
Hors ligne
#6 Le 08/11/2012, à 13:04
- Postmortem
Re : test bash, afficher un fichier s'il contient un motif
Tu as gagné le droit de passer ce sujet en résolu !
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
#7 Le 09/11/2012, à 18:57
- nesthib
Re : test bash, afficher un fichier s'il contient un motif
Ça n'est pas exactement ce qui est demandé, mais perso je ferais :
grep -n -C100 fichier*
c'est tellement plus simple
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne