텍스트를 stdout
. 예:
$ myscript
Line A
Line B
Line C
$ myscript | grep -P 'A|C' > out.file
$ cat out.file
Line A
Line C
터미널에서 첫 번째 명령의 출력을 보고 두 번째 명령의 출력을 파일에 저장하고 싶습니다. 동시에. 을 사용해 보았 tee
으나 결과가 없었습니다. 또는 더 나은 방법은 다음을 사용하는 것입니다.결과는 정반대.
답변1
터미널에서 첫 번째 명령의 출력을 보고 두 번째 명령의 출력을 파일에 저장하고 싶습니다.
당신이 보는 것이 어디에서 왔는지 상관하지 않는 한표준 출력또는표준 에러, 다음을 계속 사용할 수 있습니다 tee
.
myscript | tee /dev/stderr | grep -P 'A|C' > out.file
Linux에서는 작동합니다. "/dev/stderr"가 다른 *nix에서도 작동하는지 모르겠습니다.
답변2
{ ... | 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)
답변3
또 다른 접근 방식은 다음과 같습니다 sed
.
myscript | sed '/PATTERN/w out.file'
기본적으로 sed
수신한 모든 줄을 인쇄합니다.표준 입력( myscript
이것은표준 출력이 경우) 즉, myscript
전체 출력이 화면에 표시됩니다.
또한 일치하는 모든 줄은 다음과 같은 파일에 기록 PATTERN
됩니다 .w
out.file
답변4
tee 명령을 사용하는 방법을 지정하지 않았지만 다음과 같이 작동합니다.
myscript | grep -P 'A|C' | tee out.file
적어도 몇 분 전에는 내 서버에서 실행 중이었습니다.