문제

아래와 유사한 내용이있는 파일 A.CSV가 있습니다.

a,b,c
a  ,aa,  a
a b, c, f
a , b, c
a b a b a,a,a
a,a,a
a aa ,a , t

사용하여 정렬하려고합니다 sort -k1 -t, a.csv그러나 다음과 같은 결과를 제공하고 있습니다

a,a,a
a  ,aa,  a
a aa ,a , t
a b a b a,a,a
a , b, c
a,b,c
a b, c, f

첫 번째 열의 실제 정렬이 아닙니다. 내가 뭘 잘못하고 있죠?

도움이 되었습니까?

해결책

최종 위치도 1으로 지정해야합니다.

sort -k1,1 -t, a.csv

다른 팁

이것을 시도해보십시오 : sort -t, -k1,1 a.csv

남자는 끝 필드를 생략하면 필드에서 시작하는 모든 캐릭터를 정렬 할 것이라고 제안합니다. n 줄의 끝까지 :

-k POS1[,POS2]'
     The recommended, POSIX, option for specifying a sort field.  The
     field consists of the part of the line between POS1 and POS2 (or
     the end of the line, if POS2 is omitted), _inclusive_.  Fields and
     character positions are numbered starting with 1.  So to sort on
     the second field, you'd use `-k 2,2' See below for more examples.

대신 시도해보십시오.

sort -k 1,1 -t , a.csv

정렬 읽기 -k 1 "첫 번째 필드에서 분류"로서, 따라서 논쟁을 처음으로 통과하는 요점을 효과적으로 무시합니다.

이것은 문서화되어 있습니다 사람 페이지를 정렬하십시오 예제 섹션에서 경고했습니다.

두 번째 필드에 수치 적으로 정렬하고 Field Five의 세 번째 및 네 번째 문자에서 알파벳순으로 정렬하여 타이를 해결하십시오. 필드 구분 기자로`: '를 사용하십시오.

$ sort -t : -k 2,2n -k 5.3,5.4

당신이 글을 썼다면 주목하십시오 -k 2 대신에 -k 2,2, sort 두 번째 필드에서 시작하여 선의 끝까지 기본으로 확장 된 모든 캐릭터를 사용했을 것입니다. 숫자 열쇠. 대부분의 응용 프로그램의 경우, 숫자로 둘 이상의 필드에 걸쳐있는 키를 처리하면 기대하는 것을 수행하지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top