Mettre le résultat d'un grep comme argument d'un grep
Résolu/Fermé
paz59
Messages postés
9
Date d'inscription
vendredi 8 janvier 2016
Statut
Membre
Dernière intervention
11 février 2016
-
8 janv. 2016 à 12:14
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 - 12 janv. 2016 à 23:46
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 - 12 janv. 2016 à 23:46
A voir également:
- Mettre le résultat d'un grep comme argument d'un grep
- Erreur argument casio graph 35+e ✓ - Forum calculatrices
- Évariste souhaite télécharger le logiciel libreoffice depuis le site de son éditeur. sélectionnez le résultat de recherche sur lequel il doit cliquer. ✓ - Forum Windows Vista
- Évariste souhaite télécharger le logiciel 7-zip depuis le site de son éditeur. sélectionnez le résultat de recherche sur lequel il doit cliquer. - Forum Compression
- Lexer resultat - Télécharger - Sport
- Évariste souhaite télécharger le logiciel mozilla firefox depuis le site de son éditeur. sélectionnez le résultat de recherche sur lequel il doit cliquer. ✓ - Forum Microsoft Edge / Internet Explorer
4 réponses
mamiemando
Messages postés
33079
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
23 avril 2024
7 749
Modifié par mamiemando le 9/01/2016 à 16:18
Modifié par mamiemando le 9/01/2016 à 16:18
Bonjour
Si tu veux injecter le résultat d'une commande shell dans une autre commande shell tu peux :
1) mémoriser le résultat de la première commande dans une variable intermédiaire. Ce n'est pas une honte, ça permet d'être plus lisible et de ré-éxploiter ce résultat par la suite :p
2) directement utiliser l'opérateur
Bonne chance
Si tu veux injecter le résultat d'une commande shell dans une autre commande shell tu peux :
1) mémoriser le résultat de la première commande dans une variable intermédiaire. Ce n'est pas une honte, ça permet d'être plus lisible et de ré-éxploiter ce résultat par la suite :p
PID=$(grep pid LOG | grep -o '[[:digit:]]*') ps -ef | egrep -vw '(ps|egrep)' | egrep ${PID}
2) directement utiliser l'opérateur
$(...)(en bash) (ou
`...`. en shell) pour ne former qu'une commande :
ps -ef | egrep -vw '(ps|egrep)' | egrep $(grep pid LOG | grep -o '[[:digit:]]*')
Bonne chance
Salut,
Peux-tu nous mettre un exemple de ce que renvoient les commandes :
Ainsi qu'un bout de ton fichier de log d'où est extrait le PID.
Peux-tu nous mettre un exemple de ce que renvoient les commandes :
ps -ef | egrep -vw '(ps|egrep)' | egrep 3424
grep pid LOG | grep -o '[[:digit:]]*'
Ainsi qu'un bout de ton fichier de log d'où est extrait le PID.
paz59
Messages postés
9
Date d'inscription
vendredi 8 janvier 2016
Statut
Membre
Dernière intervention
11 février 2016
>
UnGars
Modifié par paz59 le 8/01/2016 à 14:31
Modifié par paz59 le 8/01/2016 à 14:31
Merci, mais cette simplification ne me sert à rien, je veux pouvoir remplacer le n° de ID : 3424 (que je tape moi même après avoir été consulté le log)
par le
par le
grep pid LOG | grep -o '[[:digit:]]*'qui va me chercher le n° de pid directement dans la log.
paz59
Messages postés
9
Date d'inscription
vendredi 8 janvier 2016
Statut
Membre
Dernière intervention
11 février 2016
8 janv. 2016 à 14:27
8 janv. 2016 à 14:27
Alors UnGars pour les renvoi de commandes
renvoi (si le PID : 3424 est en cours) quelque chose du type :
root 3424 1 0 2015 ? 00:00:04 /usr/sbin/sshd -o PidFile=/var/run/sshd.init.pid
sinon il ne renvoi rien
------------------------------------------------------------------------------------
renvoi le n° de l'ID en cherchant dans la log la ligne faisant référence au PID et en extrayant juste le numérique
la partie grep pid log.log me retour donc ceci :
"le package semble tourne dans le pid 3439 toujours en cours"
et la partie grep -o '[[:digit:]]*' extrait le 3439
ps -ef | egrep -vw '(ps|egrep)' | egrep 3424
renvoi (si le PID : 3424 est en cours) quelque chose du type :
root 3424 1 0 2015 ? 00:00:04 /usr/sbin/sshd -o PidFile=/var/run/sshd.init.pid
sinon il ne renvoi rien
------------------------------------------------------------------------------------
grep pid LOG | grep -o '[[:digit:]]*'
renvoi le n° de l'ID en cherchant dans la log la ligne faisant référence au PID et en extrayant juste le numérique
bakwebek 3439 3079 0 07:07 bakwebek 3950 3439 0 07:09 le package semble tourne dans le pid 3439 toujours en cours bakwebek 3439 3079 0 07:07 ? 00:00:00 /bin/ksh /appli01/bakweb/com/cde_ext_flxe_brt.com bakwebek 3950 3439 0 07:09 ? 00:00:00 /bin/ksh /appli01/bakweb/com/cde_flxe_brt_pos.com fin de traitement [[[ le package est deja en train de tourner
la partie grep pid log.log me retour donc ceci :
"le package semble tourne dans le pid 3439 toujours en cours"
et la partie grep -o '[[:digit:]]*' extrait le 3439
jisisv
Messages postés
3645
Date d'inscription
dimanche 18 mars 2001
Statut
Modérateur
Dernière intervention
15 janvier 2017
934
11 janv. 2016 à 19:48
11 janv. 2016 à 19:48
Utilise pgrep et/ou l'option -p de ps (lire la man page pour toutes les variations)
exemple:
exemple:
johand@bata:~/tmp$ ps -f -p $(pgrep iceweasel)
UID PID PPID C STIME TTY TIME CMD
johand 5422 2754 2 2015 ? 06:55:22 iceweasel
Modifié par PAZ59 le 9/01/2016 à 18:14
Merci d'avance
12 janv. 2016 à 20:52
12 janv. 2016 à 23:46