태그 보관물: pipe

pipe

stdout으로 출력하고 동시에 파일로 grep | grep -P

에 텍스트를 출력하는 스크립트가 stdout있습니다. 터미널 에서이 모든 출력을보고 싶으며 동시에 일부 줄을 필터링하고 파일에 저장하려고합니다. 예:

$ myscript
Line A
Line B
Line C

$ myscript | grep -P 'A|C' > out.file

$ cat out.file
Line A
Line C

터미널에서 첫 번째 명령의 출력을보고 두 번째 명령의 출력을 파일에 저장하고 싶습니다. 동시에. 나는 사용하여 시도 tee,하지만 결과,이나와 더 나은와 반대의 결과 .



답변

터미널에서 첫 번째 명령의 출력을보고 두 번째 명령의 출력을 파일에 저장하고 싶습니다.

보고있는 내용이 stdout 또는 stderr 에서 오는 것이 중요하지 않은 한 여전히 다음을 사용할 수 있습니다 tee.

myscript | tee /dev/stderr | grep -P 'A|C' > out.file

리눅스에서 작동합니다; “/ dev / stderr”이 다른 * nix에 똑같이 적용되는지 모르겠습니다.


답변

{ ... | 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)

답변

다른 방법은 sed다음 과 같습니다.

myscript | sed '/PATTERN/w out.file'

기본적으로 sed모든 행을 인쇄 하므로이 경우 stdoutstdin 과 동일합니다 (예 : myscript화면 의 전체 출력이 표시됨).
또한, 모든 행은 일치 PATTERN한다 w으로 리튼out.file


답변

tee 명령 사용 방법을 지정하지 않았지만 작동해야합니다.

myscript | grep -P 'A|C' | tee out.file

적어도 몇 분 전에 서버에서 작동했습니다 …


답변