Shell : rediriger un pipe vers deux commandes
Résolu
NegroTruc
-
dubcek Messages postés 18789 Date d'inscription Statut Contributeur Dernière intervention -
dubcek Messages postés 18789 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour à tous,
Je cherche à savoir s'il est possible d'utiliser les pipes shell de façon à rediriger la sortie d'une première commande vers deux autres.
Mon exemple :
J'ai ce style de script :
grep test texte.log | cut -d" " -f10 > fich1.tmp
grep test texte.log | cut -d" " -f2 > fich2.tmp
Or le premier grep est très long car le fichier texte.log est très gros. J'aimerais éviter de repasser la commande deux fois.
Je peux toujours passer par un fichier intermédiare créé pour l'occasion, mais j'aimerais éviter et faire plus "propre" si possible.
Merci d'avance !
Je cherche à savoir s'il est possible d'utiliser les pipes shell de façon à rediriger la sortie d'une première commande vers deux autres.
Mon exemple :
J'ai ce style de script :
grep test texte.log | cut -d" " -f10 > fich1.tmp
grep test texte.log | cut -d" " -f2 > fich2.tmp
Or le premier grep est très long car le fichier texte.log est très gros. J'aimerais éviter de repasser la commande deux fois.
Je peux toujours passer par un fichier intermédiare créé pour l'occasion, mais j'aimerais éviter et faire plus "propre" si possible.
Merci d'avance !
A voir également:
- Shell : rediriger un pipe vers deux commandes
- Classic shell - Télécharger - Personnalisation
- Ssh secure shell download - Télécharger - Divers Web & Internet
- Shell startup windows 10 - Guide
- Shell infrastructure host c'est quoi - Guide
- Shell do while ✓ - Forum Shell
6 réponses
il ne peut y avoir que le dernier avec > >(commande)
essayer
en résumé
essayer
grep "Login" texte.log | grep -v super | tee >(cut -d" " -f12- | cut -d"[" -f1 > fich1.test) >(grep 10.20.30.40 | wc -l > fich2.tmp) > >(grep 50.60.70.80 | wc -l > fich3.tmp)
en résumé
grep ... ¦ tee >(commande) >(commande) >(commande) ... > >(commande)
Ma commande d'origine n'est pas pas aussi simple malheureusement...
Mais bon, je n'ai "plus" qu'à apprendre comment fonctionne awk ! ^^"
Merci de ton aide.
Mais bon, je n'ai "plus" qu'à apprendre comment fonctionne awk ! ^^"
Merci de ton aide.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
avec 1 grep et plusieurs cut :
grep test texte.log | tee >(cut -d " " -f 10 >fich1.tmp) > >(cut -d " " -f 2 >fich2.tmp)
En utilisant les redirections tee de ton exemple, j'obtiendrais ça :
Ça à l'air de répondre à mon besoin. Je vais tester avec un time, pour vérifier si c'est vraiment plus efficace, mais il n'y a pas de raison ! :)
Merci !
EDIT : Arf, non, trois commandes, ça n'a pas l'air possible. Je cherche.
grep "Login" texte.log | grep -v super | tee >(cut -d" " -f12- | cut -d"[" -f1 > fich1.test) > >(grep 10.20.30.40 | wc -l > fich2.tmp) > >(grep 50.60.70.80 | wc -l > fich3.tmp)
Ça à l'air de répondre à mon besoin. Je vais tester avec un time, pour vérifier si c'est vraiment plus efficace, mais il n'y a pas de raison ! :)
Merci !
EDIT : Arf, non, trois commandes, ça n'a pas l'air possible. Je cherche.