78 votes

Comment joindre deux tuyaux nommés en un seul flux d'entrée sous linux

En utilisant les |, fonctionnalité de Linux, je peux transférer en chaîne l'entrée standard vers un ou plusieurs flux de sortie.

Je peux utiliser tee pour diviser la sortie vers des sous-processus séparés.

Y a-t-il une commande pour joindre deux flux d'entrée ?

Comment puis-je procéder ? Comment fonctionne diff ?

3voto

Kluyg Points 101

Une commande vraiment cool que j'ai utilisée pour cela est tpipe, vous devrez peut-être le compiler car ce n'est pas si courant. C'est vraiment génial pour faire exactement ce dont vous parlez, et c'est tellement propre que je l'installe généralement. La page de manuel est située ici http://linux.die.net/man/1/tpipe. Le téléchargement actuellement répertorié se trouve dans cette archive http://www.eurogaran.com/downloads/tpipe/.

C'est utilisé comme ceci,

## Réinjecter la sortie du sous-pipeline dans la sortie standard :
$ pipeline1 | tpipe "pipeline2" | pipeline3

1voto

Rian Hunter Points 61

Le meilleur programme pour faire cela est lmerge. Contrairement à la réponse de freihart, il est orienté ligne par ligne, donc la sortie des deux commandes ne s'écrasera pas. Contrairement à d'autres solutions, il fusionne équitablement les entrées pour qu'aucune commande ne puisse dominer la sortie. Par exemple :

$ lmerge <(yes foo) <(yes bar) | head -n 4

Donne en sortie :

foo
bar
foo
bar

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X