Rechercher : dans
Par :

Récupérer la valeur de la commande grep

Dernière réponse le 30 mai 2008 à 13:38:40 sajodia, le 30 mai 2008 à 11:14:45 
 Signaler ce message aux modérateurs

Bonjour,
quand je fais -> grep toto ALFA|grep traitement
j'ai: toto ........>traitement ok
je veux récupérer ce resultat dans une variable


if [ -e /papajeg/fue1/LalaO/ALFA]
then
var1=grep toto ALFA|grep traitement
echo "${var1} " | mail -s "Information " mammama@chii.fr
fi

aidez moi!!

Configuration: Windows XP
Internet Explorer 7.0

Meilleures réponses pour « récupérer la valeur de la commande grep » dans :
[Commande] “grep” récursif Voir Lorsque l'option -r (ou -d recurse) de la commande grep n'est pas disponible, comme sous HP-UX, il faut l'utiliser conjointement avec la commande find. Par exemple, pour chercher récursivement la chaîne «CCM» dans tous les fichiers réguliers à...
Comment récupérer le résultat d'une commande dans une variable VoirComment récupérer le résultat d'une commande dans une variable Préambule Syntaxe Exemples Préambule Il est bien souvent nécessaire de récupérer le résultat d'une commande (ou de son code retour) dans une variable afin de pouvoir...
Sed - Introduction à SED - Part II VoirSED - The Stream EDitor - Part II Ce document est une introduction à la pratique et à l'utilisation de l'éditeur de flux "SED", qui essaie de couvrir certaines fonctionnalités assez méconnues, pour ne pas dire "quasi inconnues", qui font de "SED"...
ASP - L'objet Request VoirPrésentation de l'objet Request Le rôle de l'objet Request est de permettre de récupérer la requête HTTP envoyée par le client au serveur, c'est-à-dire qu'il permet en réalité de manipuler l'ensemble des informations envoyées par le navigateur du...

1

HostOfSeraphim, le 30 mai 2008 à 11:17:21

Var1=$(ps -ef | grep apache)
echo $var

Ce n'est pas ta commande, mais c'est le même principe...

Ceci dit : "grep toto ALFA|grep traitement"... tu veux faire quoi comme ça ?


Configuration : Linux Debian (Lenny) / GNOME / Bash / Firefox 2
Connexion Internet : ADSL Orange 8M (Livebox)

Répondre à HostOfSeraphim

2

sajodia, le 30 mai 2008 à 11:27:06

C'est quoi apache le nom du fichier?
j'ai fait ->grep toto ALFA|grep traitement pour avoir la ligne dans laquelle j'ai toto et traitement du fichier ALFA :
....toto.............>traitement ok
mon but c'est de savoir si le traitement est OK ou KO

Répondre à sajodia

3

HostOfSeraphim, le 30 mai 2008 à 11:30:40

if [ -e /papajeg/fue1/LalaO/ALFA]
then
var1=$(grep toto ALFA | grep traitement)
echo $var1 | mail -s "Information " mammama@chii.fr
fi 


Ca, ca te renverra les lignes contenant toto et traitement... par contre, si il n'y a pas de correspondance, ça ne marchera pas.

if [ -e /papajeg/fue1/LalaO/ALFA]
then
var1=$(grep toto ALFA | grep traitement | grep -v grep)
if [ $? -eq 0 ]
then
echo $var1 | mail -s "Information " mammama@chii.fr
fi
fi 


Là, le mail ne part que si il a des correspondances.


Configuration : Linux Debian (Lenny) / GNOME / Bash / Firefox 2
Connexion Internet : ADSL Orange 8M (Livebox)

Répondre à HostOfSeraphim

4

sajodia, le 30 mai 2008 à 11:40:09

Super!
Merci beaucoup ça marche!!

Répondre à sajodia

5

HostOfSeraphim, le 30 mai 2008 à 11:41:03

Petite correction : tu peux retirer le "| grep -v grep", il ne sert à rien dans ton exemple.

Configuration : Linux Debian (Lenny) / GNOME / Bash / Firefox 2
Connexion Internet : ADSL Orange 8M (Livebox)

Répondre à HostOfSeraphim

6

sajodia, le 30 mai 2008 à 11:48:28

Mais pour vérifier si c'est OK ou KO qu'est ce que je peux faire?
parce que dans mon fichier je n'aurais pas forcement toto et traitement
je veux s'il trouve OK
then echo "OK"
else echo "KO"

Répondre à sajodia

7

HostOfSeraphim, le 30 mai 2008 à 11:49:41

Et bien il suffit juste de placer les echo au bon endroit :

if [ -e /papajeg/fue1/LalaO/ALFA]
then
var1=$(grep toto ALFA | grep traitement)
if [ $? -eq 0 ]
then
echo "OK"
echo $var1 | mail -s "Information " mammama@chii.fr
else
echo "KO"
fi
fi 


Configuration : Linux Debian (Lenny) / GNOME / Bash / Firefox 2
Connexion Internet : ADSL Orange 8M (Livebox)

Répondre à HostOfSeraphim

8

sajodia, le 30 mai 2008 à 11:58:46

Merci beaucoup
et pourr if [ $? -eq 0 ], je remplace ? par quoi?

Répondre à sajodia

9

HostOfSeraphim, le 30 mai 2008 à 11:59:29

Pourquoi le remplacer ? C'est lui qui détecte si le grep a retourné une valeur ou non.

Configuration : Linux Debian (Lenny) / GNOME / Bash / Firefox 2
Connexion Internet : ADSL Orange 8M (Livebox)

Répondre à HostOfSeraphim

10

sajodia, le 30 mai 2008 à 12:04:38

Merci encore!!!!!!!!!!
là c'est bon maintenant

Répondre à sajodia

11

 HostOfSeraphim, le 30 mai 2008 à 13:38:40

Pour t'expliquer un peu :

if [ -e /papajeg/fue1/LalaO/ALFA] // Si le fichier ALPHA existe...
then // alors...
var1=$(grep toto ALFA | grep traitement) // on met dans var1 les lignes contenant toto et traitement...
if [ $? -eq 0 ] // Si il n'y a aucune ligne de retournée...
then // alors...
echo "OK" // on affiche OK...
echo $var1 | mail -s "Information " mammama@chii.fr // on affiche les lignes retournées et on envoie le mail...
else // sinon...
echo "KO" // on affiche KO...
fi // Fin...
fi // Fin...


Si tu tapes dans un terminal une commande, par exemple "grep toto ALFA | grep traitement"... tape ensuite "echo $?".

Si il y a un résultat de retourné, $? sera égal à 0.

Si il n'y a aucun résultat, $? sera égal à 1.

Le if [ $? -eq 0 ] vérifie donc si il y a eu des résultats ou non.

C'est valable pour toute commande en général : si tu fais un "ls | grep blabla" pour rechercher un fichier nommé blabla dans un dossier, $? sera égal à 0 si le fichier est trouvé, 1 si il n'existe pas. Attention toutefois à bien utiliser le $? immédiatement après la commande, vu que $? ne concerne que la commande tapée juste avant...

Configuration : Linux Debian (Lenny) / GNOME / Bash / Firefox 2
Connexion Internet : ADSL Orange 8M (Livebox)

Répondre à HostOfSeraphim