답변:
터미널에서 첫 번째 명령의 출력을보고 두 번째 명령의 출력을 파일에 저장하고 싶습니다.
보고있는 내용이 stdout 또는 stderr 에서 오는 것이 중요하지 않은 한 여전히 다음을 사용할 수 있습니다 tee
.
myscript | tee /dev/stderr | grep -P 'A|C' > out.file
리눅스에서 작동합니다; "/ dev / stderr"이 다른 * nix에 똑같이 적용되는지 모르겠습니다.
tee /dev/tty
를 인쇄하고 다른 명령에 stdout
스크립트를 파이프해야한다는 요구에 훌륭하게 봉사했습니다 stdin
! 감사합니다! :-)
{ ... | tee /dev/fd/3 | grep -e A -e C > out.file; } 3>&1
또는 프로세스 대체 (ksh93, zsh 또는 bash) :
... | tee >(grep -e A -e C > out.file)
zsh로 :
... >&1 > >(grep -e A -e C > out.file)
/dev/fd/3
바꿀 수 있습니다.>(cat 1>&3)
다른 방법은 sed
다음 과 같습니다.
myscript | sed '/PATTERN/w out.file'
기본적으로 sed
모든 행을 인쇄 하므로이 경우 stdout 은 stdin 과 동일합니다 (예 : myscript
화면 의 전체 출력이 표시됨).
또한, 모든 행은 일치 PATTERN
한다 w
으로 리튼out.file
/dev/stderr
일반적이다./dev/tty
(현재 터미널을 의미)도 여기에서 작동하며 표준 입니다.