유닉스 정렬을 사용하여 쉼표로 구분 된 파일을 여러 열로 정렬하고 있습니다. 지금까지 데이터를 숫자 또는 알파벳 순서로 정렬하는 데 완벽하게 작동했습니다.
정렬 전의 예제 파일 :
C,United States,WA,Tacoma,f,1
A,United States,MA,Boston,f,0
B,United States,NY,New York,f,5
A,Canada,QC,Montreal,f,2
A,Bahamas,Bahamas,Nassau,f,2
A,United States,NY,New York,f,1
파일을 정렬하십시오. $ sort -t ',' -k 2,2 -k 3,3 -k 4,4 -k 5,5r -k 6,6nr tmp.csv
정렬 된 결과 :
A,Bahamas,Bahamas,Nassau,f,2
A,Canada,QC,Montreal,f,2
A,United States,MA,Boston,f,0
B,United States,NY,New York,f,5
A,United States,NY,New York,f,1
C,United States,WA,Tacoma,f,1
문제는 다음과 같습니다. 사용자 지정 정렬을 기준으로 2 열을 정렬하고 싶습니다. 즉, 미국을 먼저, 캐나다를, 바하마를 원한다는 것을 의미합니다.
원하는 정렬 :
A,United States,MA,Boston,f,0
B,United States,NY,New York,f,5
A,United States,NY,New York,f,1
C,United States,WA,Tacoma,f,1
A,Canada,QC,Montreal,f,2
A,Bahamas,Bahamas,Nassau,f,2
유닉스 정렬에 맞춤 정렬 순서를 전달하여 적용 할 수있는 방법이 있습니까? 다음과 같은 것 :
$ sort -t ',' -k 2,2:'United States, Canada, Bahamas' -k 3,3 -k 4,4 -k 5,5r -k 6,6nr tmp.csv
감사!
t
대신에 없어야 f
합니까?
join
명령이지만 많은 정렬로 끝날 수 있습니다. 입력 파일을join
한 순서로 정렬 한 다음sort
다시 사용 하여 데이터를 입력해야합니다. 다른 순서 (및 정렬 순서 열을 사후 정렬 단계로 잃음).