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
병합은 파일이 정렬되어 있다고 가정합니다. "정렬된 파일을 병합하고 정렬하지 않음"이므로 파일을 알파벳 순서로 병합하려고 시도합니다. 이것은 단순한 연결이 아닙니다. 따라서 귀하의 예에서는 다음과 같습니다.
- aa < gg: aa를 인쇄하고 a_file의 다음 줄로 이동
- ff < gg: ff를 인쇄하고 a_file의 다음 줄로 이동합니다.
- hh > gg: gg를 인쇄하고 b_file의 다음 줄로 이동합니다.
- hh < tt: hh를 인쇄하고 a_file의 다음 줄로 이동합니다.
- bb < tt: bb를 인쇄하고 a_file의 다음 줄로 이동합니다.
- a_file이 남아 있지 않으므로 b_file의 나머지 부분이 인쇄됩니다.