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

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

두 번째 열의 첫 번째 요소를 기준으로 정렬하여 두 열로 구성된 탭으로 구분된 텍스트 파일을 조작하는 방법(첫 번째 열 요소가 동일한 경우에만)?

예:

입력 파일 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

답변1

사용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문자열) 두 번째 키는 동일합니다(둘 다 숫자로 처리됨 ). 따라서 vs를 1어휘적 으로 sort비교하면 정렬 후 후자가 더 큽니다 . GNU 구현에는 실행할 옵션 또는 키 플래그가 있습니다 .A 1-10A 1-221sort-VV버전정렬은 문자열의 십진수 시퀀스를 숫자로 비교하고 숫자가 보다 크기 때문에 나중에 정렬 sort -k1,1 -k2V된다는 점을 제외하면 어휘 비교와 유사합니다 .A 1-10A 1-2102


1은 기술적으로 -k2두 번째 필드에서 시작하여(공백이 아닌 공백을 공백으로 처음 변환한 후) 줄의 끝에서 끝나는 부분이지만, 숫자를 형성하기 위한 선행 부분으로만 간주되는 n것과 동일한 플래그가 있습니다.-k2,2n

관련 정보