Linux 정렬이 원하는 결과를 제공하지 않는 이유는 무엇입니까?
문제
아래와 유사한 내용이있는 파일 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
두 번째 필드에서 시작하여 선의 끝까지 기본으로 확장 된 모든 캐릭터를 사용했을 것입니다. 숫자 열쇠. 대부분의 응용 프로그램의 경우, 숫자로 둘 이상의 필드에 걸쳐있는 키를 처리하면 기대하는 것을 수행하지 않습니다.
제휴하지 않습니다 StackOverflow