3개의 열이 다음과 같이 구분된 텍스트 파일이 있습니다. 두 번째 열을 열 2의 마지막 2자리로 정렬하는 방법은 무엇입니까?

3개의 열이 다음과 같이 구분된 텍스트 파일이 있습니다. 두 번째 열을 열 2의 마지막 2자리로 정렬하는 방법은 무엇입니까?

다음은 텍스트 파일의 예입니다.

195.92.211.47:21029:400
195.92.211.48:21023:400

두 번째 열의 마지막 2자리를 기준으로 파일 줄을 정렬하려면 어떻게 해야 합니까? 두 번째 열은 항상 5자리입니다.

답변1

두 번째 :로 구분된 필드에는 항상 5자리 숫자가 포함되어 있다고 가정합니다.

$ sort -t ':' -k2.4,2n file
195.92.211.48:21023:400
195.92.211.47:21029:400

두 번째 필드를 문자 4부터(그렇게 함) 정렬 키로 필드 끝까지 사용하고 입력을 해당 키( 끝 부분) 에 숫자로 정렬하도록 지시 -k2.4,2n합니다 . 숫자순으로 정렬하려면sort.4n전체두 번째 필드에서는 -k2,2n. 우리는 -t ':'필드가 콜론으로 구분된다고 말하곤 했습니다.

다음과 같이 명령을 실행하면 정렬에 올바른 숫자를 사용하고 있음을 알 수 있습니다 --debug( 여기서는 GNU sort와 OpenBSD 모두 표시).sort

$ gsort --debug -t ':' -k2.4,2n file
gsort: text ordering performed using simple byte comparison
195.92.211.48:21023:400
                 __
_______________________
195.92.211.47:21029:400
                 __
_______________________
$ sort --debug -t ':' -k2.4,2n file
Memory to be used for sorting: 2139060224
sort_method=heapsort
; k1=<23>, k2=<29>; s1=<195.92.211.48:21023:400>, s2=<195.92.211.47:21029:400>; cmp1=-1
195.92.211.48:21023:400
195.92.211.47:21029:400

답변2

사용sort -t: -nk2.4

-t uses the delimiter :
-n for numerical sort
-k your key is the second column

주요 정의는 에 잘 설명되어 있습니다 info sort.

'-k POS1[,POS2]'

'--키=POS1[,POS2]'

POS1과 POS2 사이의 줄 부분(또는 POS2가 생략된 경우 줄의 끝)으로 구성된 정렬 필드를 지정합니다. 포함한.

각 POS의 형식은 'F[.C][OPTS]'입니다. 여기서 F는 사용할 필드 번호이고 C는 필드 시작 부분의 첫 번째 문자 번호입니다. 필드와 문자 위치는 1부터 시작하여 번호가 매겨집니다. POS2에서 문자 위치 0은 필드의 마지막 문자를 나타냅니다. POS1에서 '.C'가 생략되면 기본값은 1(필드의 시작)입니다. POS2에서 생략되면 기본값은 0(필드 끝)입니다. OPTS는 주문 옵션으로, 개별 키를 다양한 규칙에 따라 정렬할 수 있습니다. 자세한 내용은 아래를 참조하세요. 키는 여러 필드에 걸쳐 있을 수 있습니다.

예: 두 번째 필드를 정렬하려면 '--key=2,2' ('-k 2,2')를 사용합니다. 키에 대한 자세한 내용과 추가 예제는 아래를 참조하세요. 정렬에 사용되는 줄 부분을 결정하는 데 도움이 되는 '--debug' 옵션도 참조하세요.

관련 정보