다음은 텍스트 파일의 예입니다.
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
.4
n
모두두 번째 필드는 를 사용합니다 -k2,2n
. 우리는 -t ':'
필드가 콜론으로 구분되었다고 말했습니다.
명령을 실행하면( --debug
여기에 GNU 및 OpenBSD 모두 표시됨 sort
) 올바른 숫자를 사용하여 정렬되는 것을 볼 수 있습니다.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" 옵션을 참조하세요.