정렬 키가 열의 두 번째 문자부터 시작하여 두 번째 열의 숫자인 파일을 정렬하고 싶습니다. 예를 들어:
4 31
5 a14
2 h11
1 x4
2 z3
원하는 출력은 다음과 같습니다.
4 31
2 z3
1 x4
2 h11
5 a14
이것은 sort -k
가능한 접근 방식처럼 보이지만 예상만큼 잘 작동하지 않습니다.
k, --key=KEYDEF
키별로 정렬하면 위치와 유형이 제공됩니다.
KEYDEF는 시작 및 중지 위치를 나타내는 F[.C][OPTS][,F[.C][OPTS]]입니다. 여기서 F는 필드 번호이고 C는 필드의 문자 위치입니다. 둘 다 원점 1이고 정지 위치는 기본적으로 줄 끝으로 설정됩니다. -t와 -b가 모두 유효하지 않은 경우 필드의 문자는 이전 공백의 시작 부분부터 계산됩니다. OPTS는 이 키에 대한 전역 정렬 옵션을 재정의하는 하나 이상의 단일 문자 정렬 옵션[bdfgiMhnRrV]입니다. 키가 제공되지 않으면 전체 행이 키로 사용됩니다.
나는 이것을 시도한다:
sort -k 2.2V file
4 31
5 a14
2 h11
1 x4
2 z3
이것을 올바른 방법으로 수행하는 방법은 무엇입니까?
답변1
다음과 같은 문제가 발생했습니다.
필드의 문자는 이전 공백의 시작 부분부터 계산됩니다.
sort -k 2.3V file
원하는 결과를 얻을 수 있습니다. 필드를 구분하는 공백은 두 번째 필드의 첫 번째 문자입니다.
또는 b
선행 공백을 무시하는 옵션을 추가할 수 있습니다.
sort -k 2.2bV file
이를 통해 필드 앞에 공백이 있어도 키 정의를 사용할 수 있습니다.