정렬(Unix)
sort (Unix)![]() 그 sort 명령어 | |
원저작자 | Ken Thompson (AT&T Bell 연구소) |
---|---|
개발자 | 다양한 오픈 소스 및 상용 개발자 |
초기 릴리즈 | 1971년 11월 3일, | 전(
기입처 | C |
운영 체제 | 멀티ics, Unix, Unix like, V, Plan 9, Inferno, MSX-DOS, IBM i |
플랫폼 | 크로스 플랫폼 |
유형 | 명령어 |
면허증. | 코어 유틸리티: GPLv3+ 계획 9: MIT 라이선스 |
컴퓨팅에서 sort는 Unix 및 Unix와 유사한 운영 체제의 표준 명령줄 프로그램으로, 인수 목록에 나열된 모든 파일의 입력 또는 연결 줄을 정렬된 순서로 인쇄합니다.정렬은 각 입력 행에서 추출된 하나 이상의 정렬 키에 따라 수행됩니다.기본적으로는 입력 전체가 정렬 키로 간주됩니다.기본 필드 구분 기호는 공백입니다.이 명령어는 구현에 따라 다를 수 있는 많은 명령줄 옵션을 지원합니다.예를 들어 "-r
" 플래그는 정렬 순서를 바꿉니다.
역사
A sort
일반적인 정렬 기능을 호출하는 명령어는 Multics [1]내에서 처음 구현되었습니다.그 후 버전 1 Unix에서 등장했습니다.이 버전은 AT&T Bell Laboraties의 Ken Thompson에 의해 원래 작성되었습니다.버전 4에서는 Thompson이 파이프를 사용하도록 수정했지만, sort에서는 파일을 정렬하는 데 사용되었기 때문에 출력 파일에 이름을 붙일 수 있는 옵션이 유지되었습니다.버전 5에서 Thompson은 표준 [2]입력을 나타내는 "-"를 발명했습니다.
의 버전 GNUcoreutils에 번들된 정렬은 Mike Haertel과 Paul Egert에 [3]의해 작성되었습니다.이 실장에서는, Marge Sort 알고리즘이 채용되고 있습니다.
다른 많은 운영 체제에서도 유사한 명령을 사용할 수 있습니다. 예를 들어 정렬 명령은 ASCII의 MSX-DOS 버전 [4]2용 MSX-DOS2 도구의 일부입니다.
sort 명령어는 IBM i 운영 [5]체제에도 이식되었습니다.
구문
[OPTION]...[FILE] 정렬...
없음FILE
또는 언제FILE
이-
명령어는 표준 입력에서 읽습니다.
파라미터
이름. | 묘사 | 유닉스 | 플랜 9 | 지옥 | FreeBSD | 리눅스 | MSX-DOS | IBM i |
---|---|---|---|---|---|---|---|---|
-b, --선도적으로 리드-선도적 사람-선도적 사람-선도적. | 선행 공백을 무시합니다. | 네. | 네. | 아니요. | 네. | 네. | 아니요. | 네. |
-c | 입력 파일이 정렬되었는지 확인합니다. | 아니요. | 네. | 아니요. | 네. | 네. | 아니요. | 네. |
-C | -c와 비슷하지만 첫 번째 불량 행은 보고하지 않습니다. | 아니요. | 아니요. | 아니요. | 네. | 네. | 아니요. | 아니요. |
-d, --기본순서 | 공백 및 영숫자만 고려합니다. | 네. | 네. | 아니요. | 네. | 네. | 아니요. | 네. |
-f, --대소문자 | 소문자를 대문자로 접습니다. | 네. | 네. | 아니요. | 네. | 네. | 아니요. | 네. |
-g, --general-module-module, --syslog=general-syslog | 일반적인 수치로 비교합니다. | 네. | 네. | 아니요. | 네. | 네. | 아니요. | 아니요. |
-h, --인간-인간-인간-인간-인간-인간-인체-인체, --param=인간의 보호 | 사람이 읽을 수 있는 숫자(2K 1G 등)를 비교합니다. | 네. | 아니요. | 아니요. | 네. | 네. | 아니요. | 아니요. |
-i, --비인쇄 | 인쇄 가능한 문자만 고려합니다. | 네. | 네. | 아니요. | 네. | 네. | 아니요. | 네. |
-k, --키=POS1[,POS2] | 키를 POS1(원래 1)에서 시작하여 POS2(기본 행 끝)에서 종료합니다. | 아니요. | 아니요. | 아니요. | 네. | 네. | 아니요. | 아니요. |
-m | 머지만. 입력 파일은 사전 정렬된 것으로 간주됩니다. | 아니요. | 네. | 아니요. | 네. | 네. | 아니요. | 네. |
- M, --월간, --contrace=월 | 비교(알 수 없음) < 'JAN' <...< DEC > 。 | 네. | 네. | 아니요. | 네. | 네. | 아니요. | 아니요. |
-n, --context-matrix, --syslog=개요 | 문자열 수치로 비교합니다. | 네. | 네. | 네. | 네. | 네. | 아니요. | 네. |
-o 산출량 | 표준 출력 대신 OUTPUT 파일을 사용합니다. | 아니요. | 네. | 아니요. | 네. | 네. | 아니요. | 네. |
-r, --마이너스 | 비교 결과를 뒤집습니다. | 네. | 네. | 네. | 네. | 네. | 아니요. | 네. |
-R, --context-matrix, --syslog=개요 | shuffle을 사용하지만 동일한 키를 그룹화합니다.참고 항목: shuf | 네. | 아니요. | 아니요. | 네. | 네. | 아니요. | 아니요. |
-s | 라스트 리소스 비교를 디세블로 하여 정렬을 안정시킵니다. | 아니요. | 아니요. | 아니요. | 네. | 네. | 아니요. | 아니요. |
-사이즈 --size-c-size=크기 | 메모리 버퍼의 최대 크기에 크기를 사용합니다. | 아니요. | 아니요. | 아니요. | 네. | 아니요. | 아니요. | 아니요. |
-스위치 | 구분 필드를 구분하는 '탭 문자'는 x입니다. | 아니요. | 네. | 아니요. | 아니요. | 네. | 아니요. | 네. |
- 차, --field-param=차 | 공백이 아닌 공백으로 변환하는 대신 char를 사용합니다. | 아니요. | 아니요. | 아니요. | 네. | 네. | 아니요. | 아니요. |
- Tdir, --block-directory=디르 | 임시로 dir를 사용합니다. | 아니요. | 네. | 아니요. | 네. | 네. | 아니요. | 아니요. |
-u, --마이너스 | 동일한 키를 가진 각 회선 세트 중 1개만 제외하고 모든 것을 억제하는 고유 처리. | 아니요. | 네. | 아니요. | 네. | 네. | 아니요. | 네. |
- 뷔, --버전 인식 | 텍스트 내의 자연스러운 종류의 (버전) 숫자 | 아니요. | 아니요. | 아니요. | 네. | 네. | 아니요. | 아니요. |
-w | -i와 비슷하지만 탭과 공백만 무시합니다. | 아니요. | 네. | 아니요. | 아니요. | 아니요. | 아니요. | 아니요. |
-z, --제로 종단 | 줄바꿈이 아닌 0바이트의 끝줄 | 아니요. | 아니요. | 아니요. | 네. | 네. | 아니요. | 아니요. |
--도움말 | 도움말 표시 및 종료 | 아니요. | 아니요. | 아니요. | 네. | 네. | 아니요. | 아니요. |
--버전 | 버전 정보 출력 및 종료 | 아니요. | 아니요. | 아니요. | 네. | 네. | 아니요. | 아니요. |
/R | 비교 결과를 뒤집습니다. | 아니요. | 아니요. | 아니요. | 아니요. | 아니요. | 네. | 아니요. |
/S | 각 행의 몇 자리수를 판정할지를 결정하는 자리수를 지정합니다. | 아니요. | 아니요. | 아니요. | 아니요. | 아니요. | 네. | 아니요. |
/A | ASCII 코드로 정렬합니다. | 아니요. | 아니요. | 아니요. | 아니요. | 아니요. | 네. | 아니요. |
/H | 와일드카드를 사용할 때 숨김 파일을 포함합니다. | 아니요. | 아니요. | 아니요. | 아니요. | 아니요. | 네. | 아니요. |
예
파일을 알파벳 순으로 정렬합니다.
$ 고양이 전화번호부 스미스, 브렛 555-4321 도, 존 555-1234 도, 제인 555-3214 에이버리, 코리 555-4132 포가티, 수지 555-2314
$분류 전화번호부 에이버리, Cory 555-4132 Doe, Jane 555-3214 Doe, John 555-1234 Fogarty, Suzie 555-2314 Smith, Brett 555-4321
번호순 정렬
그-n
옵션을 지정하면 프로그램이 숫자 값에 따라 정렬됩니다.du 명령어는 파일사이즈라는 숫자로 시작하는 출력을 생성합니다.따라서 출력의 파이핑을 통해 파일사이즈별로 정렬된 파일목록을 생성할 수 있습니다.
$du /bin/* 정렬 -n 4 /bin/domainname 24 /bin/ls 102 /bin/sh 304 /bin/csh
ls 옵션을 지정한 find 명령어는 파일사이즈를 7번째 필드에 출력하기 때문에 파일사이즈별로 정렬된 LaTeX 파일의 리스트는 다음과 같이 작성됩니다.
$ find . - name " . tex " - ls sort - k
열 또는 필드
를 사용합니다.-k
옵션을 사용하여 특정 열을 정렬할 수 있습니다.예를 들어 "를 사용합니다.-k 2
두 번째 열에 정렬합니다.이전 버전에서는+1
옵션에서 프로그램을 데이터의 두 번째 열에 정렬했습니다(+2
(3번째 등)이 사용법은 권장되지 않습니다.
$ cat zipcode Adam 12345 Bob 34567 Joe 56789 Sam 45678 Wendy 23456
$ sort - k 2n 우편번호 Adam 12345 Wendy 23456 Bob 34567 Sam 45678 Joe 56789
여러 필드에서 정렬
그-k m,n
옵션을 사용하면 여러 필드로 구성될 수 있는 키를 정렬할 수 있습니다(컬럼에서 시작).m
, 컬럼에서 끝납니다.n
):
$ cat 쿼터 fred 2000 bob 1000 、 1000 chad 1000 don 1500 eric 500
$ sort -k2,2n -k1,1 쿼터 eric 500 an 1000 bob 1000 chad 1000 don 1500 fred 2000
여기서는 열 2를 사용하여 첫 번째 정렬을 수행합니다. -k2,2n
는 열 2로 시작하는 키와 끝나는 키를 정렬하고 숫자 정렬을 지정합니다.한다면-k2
대신 정렬 키가 컬럼2에서 시작하여 행의 마지막까지 확장되어 그 사이에 있는 모든 필드에 걸쳐 있습니다. -k1,1
는 열 1의 값을 사용하여 연결을 끊고 기본적으로 알파벳 순으로 정렬하도록 지정합니다.bob과 chad는 같은 쿼터를 가지며 최종 출력에서 알파벳 순으로 정렬됩니다.
파이프 구분 파일 정렬
$ sort -k2,2,-k1,1 -t' 우편번호 Adam 12345 Wendy 23456 Sam 45678 Joe 56789 Bob 34567
탭 구분 파일 정렬
탭 구분 값을 사용하여 파일을 정렬하려면 탭 문자를 열 구분 기호로 지정해야 합니다.이 그림에서는 셸의 달러 따옴표기를[6][7] 사용하여 탭을 C 이스케이프 시퀀스로 지정합니다.
$sort - k2,2 -t