첫 번째 열과 두 번째 열을 기준으로 파일 정렬


13

두 번째 열의 첫 번째 요소를 기준으로 정렬하여 두 개의 열로 구분 된 텍스트 파일을 조작하려면 어떻게해야합니까 (첫 번째 열 요소가 동일한 경우에만)?

예 :

입력 파일 1

A   1-2
A   6-8
A   3-4
B   7-10
B   5-9

예상 출력 : 파일 2

A   1-2
A   3-4
A   6-8
B   5-9
B   7-10

답변:


22

sort-k옵션 을 사용 하여 한 번에 (여러) 열을 기준으로 정렬 하십시오 .

$ sort -k1,1 -k2n input
A   1-2
A   3-4
A   6-8
B   5-9
B   7-10

-k1,1첫 번째 열이 먼저 -k2n묶인 다음 첫 번째 열을 기준으로 두 번째 ¹에 따라 숫자 순으로 정렬하므로 원하는 순서대로 출력을 얻을 수 있습니다. 첫 번째 열 요소가 동일한 경우에만 두 번째 열의 첫 번째 요소를 기준으로 정렬하십시오.

숫자로 정렬하면 숫자가 될 때까지 필드를 검사하므로 필드의 첫 번째 요소 만 비교할 수 있습니다.

두 키가 동일하게 sort비교되면 전체 행을 어휘 적으로 마지막 수단 비교와 비교합니다. 예를 들어 A 1-10vs A 1-2에서 첫 번째 키는 동일하고 ( A문자열) 두 번째 키는 모두 숫자로 취급 1되므로 vs를 사 전적으로 sort비교 하고 후자는 정렬 후 더 큽니다 . 의 GNU 구현은 가 옵션 또는 수행 키 플래그 버전 때문에, 문자열이 수치 비교에서 진수의 시퀀스를 제외하고 어휘의 비교처럼 종류를 하고자 종류 후 때문에 숫자보다 큰 경우로 .A 1-10A 1-221sort-VVsort -k1,1 -k2VA 1-10A 1-2102


¹ 기술적으로, -k2두 번째 필드로 시작하여 (공백이 아닌 상태에서 공백으로 첫 번째 전환 후) 줄의 끝에서 끝나지만 n플래그로 끝나는 -k2,2n부분의 부분을 의미합니다. 숫자를 구성하는 것으로 간주됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.