sort -n 명령은 숫자와 텍스트가 포함된 파일에서 무엇을 정렬해야 하는지 어떻게 알 수 있나요?

sort -n 명령은 숫자와 텍스트가 포함된 파일에서 무엇을 정렬해야 하는지 어떻게 알 수 있나요?

나는 지금 이 블로그를 읽고 있습니다:https://www.baeldung.com/linux/dir-find-largest-file-recursively

저는 다음 명령을 요청합니다.

find /usr/lib -type f -printf "%s\t%p\n" | sort -n | tail -1
92107656        /usr/lib/x86_64-linux-gnu/libwireshark.so.13.0.3

%s치수 와 경로가 인쇄 됩니다 %p. 하지만 sort -n경로가 아닌 크기별로 정렬해야 한다는 것을 어떻게 알 수 있나요?

아마도 어리석은 질문일 것이라는 걸 알지만, 어쨌든 묻습니다.

문서에 따르면,https://man7.org/linux/man-pages/man1/sort.1.html

-n, --numeric-sort
compare according to string numerical value

정렬을 위해 문자열 숫자 값을 사용합니다. 첫 번째 열을 구체적으로 살펴봐야 한다는 것을 어떻게 알 수 있나요?

답변1

많은 옵션이 sort선 비교 방법에 영향을 미칩니다.

이것이 info coreutils sort invocation어떻게 sort작동하는지 설명합니다:

행 쌍은 다음과 같이 비교됩니다. 각 필드 쌍은 차이가 발견되거나 필드가 더 이상 남지 않을 때까지 관련 정렬 옵션에 따라 sort명령줄( 참조)에 지정된 순서로 비교됩니다 .--key키 필드를 지정하지 않으면 sort 전체 행의 기본 키가 사용됩니다..

따라서 sort -n입력은 키 필드가 지정되지 않았기 때문에 전체 행을 비교하여 숫자로 정렬됩니다(아래 설명 참조).

-n
--numeric-sort
--sort=numeric

숫자순으로 정렬합니다.각 줄의 시작 부분에 있는 숫자선택적 공백, 선택적 -기호, 천 단위 구분 기호로 구분할 수 있는 0개 이상의 숫자, 선택적으로 소수점 문자 및 0개 이상의 숫자로 구성됩니다. NULL 숫자는 이와 같이 처리됩니다 0. 로캘은 LC_NUMERIC소수점 문자와 천 단위 구분 기호를 지정합니다. 기본적으로 공백은 공백 또는 탭 문자이지만 LC_CTYPE지역 설정에 따라 이를 변경할 수 있습니다.

비교적 정확합니다. 반올림 오류가 없습니다.

답변2

어차피 그게 그런 일이니까. 라인을 정렬합니다. 정렬은 항상 두 문자열의 시작 부분을 비교하여 수행되며(각 경우에는 명령뿐만 아니라 sort종이에 단어를 정렬하는 방법을 확인하십시오.) 시작 부분이 동일한 경우에만 한 요소 앞으로 이동하여 비교를 진행합니다. 곧.

-n모드 에서는 sort숫자를 형성하는 한 각 줄의 시작 부분에 있는 문자를 읽은 다음 해당 숫자를 첫 번째 요소로 해석합니다. 두 번째 요소는 해석될 수 있는 숫자 다음의 첫 번째 문자가 되고, 세 번째 요소는 숫자 다음의 두 번째 문자가 됩니다.

어떤 모드에서든 sort정렬 작업 외에는 아무것도 수행하지 않으므로 항상 첫 번째 요소를 먼저 비교하고 "왜 나중에 나오는 행의 일부 부분을 정렬하지 않는가"라는 질문을 받지 못합니다.

sort따라서 플래그를 사용하지 않으면 -k데이터가 열에 있는 것으로 처리되지 않습니다. -n문자열의 시작 부분에 있는 모든 문자를 숫자로 해석하여 단일 "수퍼 문자"로 해석하려는 특별한 예외를 제외하고 문자열을 정렬합니다 .

답변3

그런 개념은 없어요목록, 하지만 개념이 있습니다.필드, 옵션이 있습니다 --field-separator.

--key=KEYDEF행은 여러 키 필드(행 내에서 임의의 순서로 나타날 수 있음)로 정렬될 수 있으며 공백, 숫자 키 및 오름차순 또는 내림차순을 무시하도록 모든 키 정의를 독립적으로 지정할 수 있습니다 . 모든 주요 사양에 사용할 수 있는 하위 옵션은 11개입니다.

man sort페이지는 완전히 부적절합니다. 적어도 그것을 참조하십시오 info sort.

당신은 또한 읽을 수 있습니다https://www.gnu.org/software/coreutils/manual/coreutils.pdfSection 7.1 sort: Sort text files다음을 포함하여 10페이지의 세부정보 까지 아래로 스크롤하세요 .

sort -t : -b -k 5,5 -k 3,3n /etc/passwd

이 섹션에서는 완전히 유연한 DSU 관용어(Decorate, Sort, Un장식)도 참조합니다.

관련 정보