2016-07-06 2 views
2

sort은 내 키 사양을 좋아하지 않는 것 같습니다. 왜? 남자 페이지에서 Gnu 정렬 : 필드 사양의 빗나간 문자

~/tmp $ sort --version 
sort (GNU coreutils) 8.25 
Packaged by Cygwin (8.25-1) 
~/tmp $ echo 'a;b;c;d;e;f;g'|sort --field-separator=';' --key=1,5,2           
sort: stray character in field spec: invalid field specification '1,5,2' 

:

-k, --key = KEYDEF : 일종의 열쇠를 통해; KEYDEF 위치와 문자 위치 F는 [.C] [OPTS]가 개시를 위해 [F는 [.C] [] OPTS]이다

KEYDEF 입력 및 F는 필드 번호 인 위치를 중지하고 C를 준다 해당 영역에서; 둘 다 원점 1이고 정지 위치 의 기본값은 행의 끝입니다.

KEYDEF의 .C 및 OPTS 부분은 선택 사항이므로 키 지정 F, F, F (즉, 필드 번호 만)가 정확해야합니다. 나는 무엇을 잘못 했는가?

현재, 내 환경은 Z- 쉘을 실행하는 Cygwin입니다.

답변

3

-k arg의 두 필드는 START 및 END 필드입니다. 여러 개의 키를 정렬하려면 -n ANY NUMBER OF TIMES를 지정할 수 있습니다. 따라서 -k 1,1 -k 2,2 -k 3,3은 먼저 필드 1에서 정렬되고 필드 2에서 필드 3으로 정렬됩니다.

+0

고마워, 마침내! – user1934428

1

죄송합니다. 필자는 맨 페이지를 문자 그대로 취해야했습니다. KEYDEF 대한 정의는

F[.C][OPTS][,F[.C][OPTS]] 

이며 1 또는 제 2 필드가 아닌 임의의 수를 제공 할 수 있다는 것을 의미하지

F[.C][OPTS][,F[.C][OPTS]...] 

말한다. 이것은 오류를 설명합니다.

부수적으로, 나는 인데 여전히 man 페이지에 오류가 있다고 생각합니다. KEYDEF 정의에 따르면 의 정지 위치는 라인의으로 기본 설정됩니다. 이것은 사실 일 수 없다, 그렇지? IMO는 이어야하며 정지 위치의 기본값은 필드입니다.

업데이트 : 내 설명이 정확하지 않습니다. 정확한 설명은 @tedtoal이 제공 한 답변을 참조하십시오.