일부 이름이 포함된 두 개의 파일이 있습니다. 을 실행하면 cat file1 file2 | sort
터미널에 알파벳순으로 정렬된 이름이 표시되지만 실행하면 cat file1 file2 > file3 | sort
정렬된 출력이 표시되지 않습니다. 이유는 무엇입니까?
답변1
file1
및 의 출력을 file2
새 파일로 리디렉션 했습니다 file3
.
cat file1 file2 > file3 | sort
배관 후에 이 명령을 사용하십시오 sort
.
이는 다음과 같이 확인할 수 있습니다.
cat file1
A
Z
B
cat file2
F
G
C
이제 명령을 실행하면 cat file1 file2 > file3 | sort
및 의 내용이 기록되었지만 정렬되지 않은 것을 볼 수 있습니다.file1
file2
file3
나는 당신이 이루고 싶은 것이 쉽게 이루어질 수 있다고 믿습니다.
cat file1 file2 | sort > file3
그러나 콘솔 창에는 출력이 표시되지 않습니다.
두 파일의 정렬된 출력을 새 파일에 쓰고 정렬된 출력을 콘솔에서 사용할 수 있도록 해야 하는 경우 다음을 수행할 수 있습니다.
cat file1 file2 | sort > file3; cat file3
tee
그래도 이런 경우에는 사용하면 좋습니다. tee
다음과 같이 효과적으로 사용될 수 있습니다.
cat file1 file2 | sort | tee file3
위 명령은 기본적으로 2개의 파일을 연결하여 정렬한 후 파이프의 출력을 명령으로 지정된 새 파일에 쓰는 동안 콘솔에 출력을 표시합니다 tee
.
사용자로서캐시zsh
시스템에 사용 가능한 쉘이 있으면 다음 명령을 사용할 수도 있다는 점을 지적하십시오 .
sort <file1 <file2 | tee file3
답변2
POSIX는 sort
이 유틸리티의 목적을 다음과 같이 정의합니다.
지정된 모든 파일의 행을 정렬하고 결과를 지정된 출력에 씁니다.
두 파일을 연결된 출력 파일로 정렬할 수 있습니다. 예를 들면 다음과 같습니다.
sort $opts file1 file2 >output_file
쉘에서 출력을 보려면stdout
그리고결과를 출력 파일에 저장하고 다음을 사용하십시오 tee
.
sort $opts file[12] | tee output_file