나는 지금 이 블로그를 읽고 있습니다: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장식)도 참조합니다.