Tengo un script que envía texto a stdout. Quiero ver toda esta salida en mi terminal, y al mismo tiempo quiero filtrar algunas líneas y guardarlas en un archivo. Ejemplo:
$ myscript
Line A
Line B
Line C
$ myscript | grep -P 'A|C' > out.file
$ cat out.file
Line A
Line C
Quiero ver la salida del primer comando en la terminal y guardar la salida del segundo comando en un archivo. Al mismo tiempo. Intenté usar tee, pero sin resultado, o mejor, con resultado inverso .

/dev/stderrEs común./dev/tty(es decir, el terminal actual) también funcionaría aquí, y es estándar .tee /dev/tty¡Sirvió maravillosamente para mi requerimiento de tener que imprimir elstdoutscript en la terminal y canalizarlo alstdinotro comando también! Gracias! :-)O con la sustitución de procesos (ksh93, zsh o bash):
Con zsh:
fuente
/dev/fd/3se puede reemplazar con>(cat 1>&3)Aquí hay otra forma con
sed:Por defecto,
sedimprime cada línea, por lo que en este caso stdout será el mismo que stdin (es decir, verá la salida completa de lamyscriptpantalla).Además, todas las líneas coincidentes
PATTERNse combinaránwconout.filefuente
no especificó cómo utilizó el comando tee pero esto debería funcionar:
al menos funcionó en mi servidor hace unos minutos ...
fuente