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/stderr
Es 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 elstdout
script en la terminal y canalizarlo alstdin
otro comando también! Gracias! :-)O con la sustitución de procesos (ksh93, zsh o bash):
Con zsh:
fuente
/dev/fd/3
se puede reemplazar con>(cat 1>&3)
Aquí hay otra forma con
sed
:Por defecto,
sed
imprime cada línea, por lo que en este caso stdout será el mismo que stdin (es decir, verá la salida completa de lamyscript
pantalla).Además, todas las líneas coincidentes
PATTERN
se combinaránw
conout.file
fuente
no especificó cómo utilizó el comando tee pero esto debería funcionar:
al menos funcionó en mi servidor hace unos minutos ...
fuente