J'ai une question sur le comportement de ma commande bash. Je veux grep deux fois le même flux de stdout vers 2 fichiers différents. Pour ce faire, j'ai fait :
./prog | tee >(grep -i 'grep1' > file1) | grep -i 'grep2' > file2
Mais mon fichier 2 est vide. Je pensais que mon grep -i 'grep2'
n'a rien attrapé mais si je tape juste :
./prog | tee >(grep -i 'grep1' > file1) | grep -i 'grep2'
J'ai le résultat de mon brevet :
[grep2] mylog...
[grep2] mylog...
[grep2] mylog...
J'arrive à écrire dans mes deux fichiers avec cette commande :
./prog | tee >(grep -i 'grep1' > file1) >(grep -i 'grep2' > file2)
mais je dois ajouter > /dev/null
à la fin, pour ne pas avoir de sortie dans stdout.
Ma question est la suivante : pourquoi la redirection après le second grep n'est pas prise en compte par mon file2
et pourquoi dois-je ajouter un autre tuyau nommé pour le faire ?