sort 명령의 -m 옵션은 어떻게 작동하나요?

sort 명령의 -m 옵션은 어떻게 작동하나요?

sort매뉴얼 페이지에 따르면 다음 과 같습니다 .

-m, --merge
    merge already sorted files; do not sort

sort다음은 두 개의 간단한 텍스트 파일과 옵션이 포함된 명령의 결과입니다 -m.

soroush@pop-os:~/Desktop$ cat a_file.txt 
aa
ff
hh
bb
soroush@pop-os:~/Desktop$ cat b_file.txt 
gg
tt
ss
ii
cc
soroush@pop-os:~/Desktop$ sort -m a_file.txt b_file.txt 
aa
ff
gg
hh
bb
tt
ss
ii
cc

나는 다음과 같은 결과를 볼 것으로 예상합니다.

aa
ff
hh
bb
gg
tt
ss
ii
cc

누군가 이 동작을 설명할 수 있나요?

답변1

병합은 파일이 정렬되어 있다고 가정합니다. "정렬된 파일을 병합하고 정렬하지 않음"이므로 파일을 알파벳 순서로 병합하려고 시도합니다. 이것은 단순한 연결이 아닙니다. 따라서 귀하의 예에서는 다음과 같습니다.

  1. aa < gg: aa를 인쇄하고 a_file의 다음 줄로 이동
  2. ff < gg: ff를 인쇄하고 a_file의 다음 줄로 이동합니다.
  3. hh > gg: gg를 인쇄하고 b_file의 다음 줄로 이동합니다.
  4. hh < tt: hh를 인쇄하고 a_file의 다음 줄로 이동합니다.
  5. bb < tt: bb를 인쇄하고 a_file의 다음 줄로 이동합니다.
  6. a_file이 남아 있지 않으므로 b_file의 나머지 부분이 인쇄됩니다.

관련 정보