J'ai un script qui produit du texte stdout
. Je veux voir toute cette sortie dans mon terminal, et en même temps, je veux filtrer certaines lignes et les enregistrer dans un fichier. Exemple:
$ myscript
Line A
Line B
Line C
$ myscript | grep -P 'A|C' > out.file
$ cat out.file
Line A
Line C
Je veux voir la sortie de la première commande dans le terminal et enregistrer la sortie de la deuxième commande dans un fichier. À la fois. J'ai essayé d'utiliser tee
, mais sans résultat, ou mieux, avec un résultat inversé .
/dev/stderr
est commun./dev/tty
(signifiant le terminal actuel) fonctionnerait également ici, et c'est standard .tee /dev/tty
a merveilleusement servi pour mon exigence d'avoir à imprimer lestdout
script sur le terminal et à le rediriger vers lastdin
commande aussi! Merci! :-)Ou avec substitution de processus (ksh93, zsh ou bash):
Avec zsh:
la source
/dev/fd/3
peut être remplacé par>(cat 1>&3)
Voici une autre façon avec
sed
:Par défaut,
sed
imprime chaque ligne, dans ce cas, stdout sera le même que stdin (c'est-à-dire que vous verrez la sortie entière demyscript
sur écran).De plus, toutes les lignes correspondantes
PATTERN
serontw
écritesout.file
la source
vous n'avez pas spécifié comment vous avez utilisé la commande tee mais cela devrait fonctionner:
au moins cela a fonctionné sur mon serveur il y a quelques minutes ...
la source