Mam skrypt, który wyświetla tekst na adres stdout
. Chcę zobaczyć wszystkie te dane wyjściowe w moim terminalu, a jednocześnie chcę przefiltrować niektóre wiersze i zapisać je w pliku. Przykład:
$ myscript
Line A
Line B
Line C
$ myscript | grep -P 'A|C' > out.file
$ cat out.file
Line A
Line C
Chcę zobaczyć wynik pierwszego polecenia w terminalu i zapisać wynik drugiego polecenia w pliku. W tym samym czasie. Próbowałem użyć tee
, ale bez rezultatu lub lepiej, z wynikiem odwróconym .
/dev/stderr
jest powszechne./dev/tty
(czyli obecny terminal) też tu by działało i jest to standard .tee /dev/tty
służyło wspaniale, ponieważ wymagałem wydrukowaniastdout
skryptu na terminalu i przesłania go również dostdin
innego polecenia! Dziękuję! :-)Lub z podstawieniem procesu (ksh93, zsh lub bash):
Z zsh:
źródło
/dev/fd/3
możesz go zastąpić>(cat 1>&3)
Oto inny sposób
sed
:Domyślnie
sed
wypisuje każdą linię, więc w tym przypadku standardowe wyjście będzie takie samo jak standardowe (tzn. Zobaczysz cały wynikmyscript
na ekranie).Ponadto wszystkie pasujące linie
PATTERN
zostaną przypisanew
doout.file
źródło
nie określiłeś sposobu użycia polecenia tee, ale powinno to działać:
przynajmniej działało na moim serwerze kilka minut temu ...
źródło