У меня есть скрипт, который выводит текст в stdout
. Я хочу видеть весь этот вывод в моем терминале, и в то же время я хочу отфильтровать некоторые строки и сохранить их в файл. Пример:
$ myscript
Line A
Line B
Line C
$ myscript | grep -P 'A|C' > out.file
$ cat out.file
Line A
Line C
Я хочу увидеть вывод первой команды в терминале и сохранить вывод второй команды в файл. В то же время. Я пытался использовать tee
, но без результата, или лучше, с обратным результатом .
/dev/stderr
распространено/dev/tty
(имеется в виду текущий терминал) также будет работать здесь, и это стандартно .tee /dev/tty
служил замечательно, потому что мне требовалось распечататьstdout
сценарий на терминале и передать егоstdin
другой команде! Thankees! :-)Или с подстановкой процесса (ksh93, zsh или bash):
С зш:
источник
/dev/fd/3
можно заменить на>(cat 1>&3)
Вот еще один способ с
sed
:По умолчанию
sed
печатает каждую строку, поэтому в этом случае stdout будет таким же, как stdin (т.е. вы увидите весь выводmyscript
на экране).Кроме того, все совпадающие строки
PATTERN
будутw
записаны вout.file
источник
вы не указали, как вы использовали команду tee, но это должно работать:
по крайней мере, это работало на моем сервере несколько минут назад ...
источник