두 파일을 새 파일로 연결하고 출력을 정렬하는 방법

두 파일을 새 파일로 연결하고 출력을 정렬하는 방법

일부 이름이 포함된 두 개의 파일이 있습니다. 을 실행하면 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및 의 내용이 기록되었지만 정렬되지 않은 것을 볼 수 있습니다.file1file2file3

나는 당신이 이루고 싶은 것이 쉽게 이루어질 수 있다고 믿습니다.

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

관련 정보