![명령 출력을 두 개의 별도 명령으로 파이프하고 출력을 저장하는 방법](https://linux55.com/image/182451/%EB%AA%85%EB%A0%B9%20%EC%B6%9C%EB%A0%A5%EC%9D%84%20%EB%91%90%20%EA%B0%9C%EC%9D%98%20%EB%B3%84%EB%8F%84%20%EB%AA%85%EB%A0%B9%EC%9C%BC%EB%A1%9C%20%ED%8C%8C%EC%9D%B4%ED%94%84%ED%95%98%EA%B3%A0%20%EC%B6%9C%EB%A0%A5%EC%9D%84%20%EC%A0%80%EC%9E%A5%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
나는 거대한 파일에서 실행되는 매우 긴 명령을 가지고 있으며 이를 두 번 실행해야 하므로 런타임이 두 배로 늘어납니다.
이것이 내가 지금 하고 있는 일입니다:
x=$(command | sort -u)
y=$(command | sort -n)
위에서 and 를 사용하여 했던 것처럼 명령의 출력을 sort -u
and 로 리디렉션 sort -n
하고 각 명령의 출력을 별도의 변수나 파일에 저장할 수 있는 방법이 있는지 궁금합니다 .x
y
나는 성공하지 못한 채 다음을 수행하기 위해 tee를 사용해 보았습니다.
command | tee >(sort -n > x.txt) >(sort -u > y.txt)
출력을 텍스트 파일로 리디렉션하려고 시도했지만 표준 출력으로만 인쇄됩니다.
어떤 제안이나 아이디어가 있나요?
답변1
당신은 정말 가깝습니다
command | tee >(sort -n >/tmp/x.txt) | sort -u >/tmp/y.txt
궁금하다면 >( ... )
작업이 설명자 파이프의 경로(예: /dev/fd/1234
)로 대체되므로 결과 파이프는 이 모양을 가지며 /dev/fd/1234
다른 sort
명령 에 추가됩니다.
command | tee /dev/fd/1234 | sort > /path/to/elsewhere
sort
ed 출력을 변수로 캡처합니다 (논평, 질문이 아닙니다)
var=$(command | tee >(sort -n > x.txt) >(sort -u > y.txt) | sort -u)