[unix] “sort”명령을 사용하여 열 우선 순위별로 CSV 파일 정렬
csv 파일이 있는데 “order by”와 같은 열 우선 순위별로 정렬하고 싶습니다. 예를 들면 :
3;1;2
1;3;2
1;2;3
2;3;1
2;1;3
3;2;1
이 상황이 “select”의 결과 인 경우 “order by”는 다음과 같습니다. order by column2, column1, column3-결과는 다음과 같습니다.
2;1;3
3;1;2
1;2;3
3;2;1
1;3;2
2;3;1
Unix에서 “sort”명령을 사용하여 동일한 결과를 얻는 방법을 알고 싶습니다.
답변
sort --field-separator=';' --key=2,1,3
답변
다른 행이 가정 3;10;3
당신의 unsorted.csv
파일. 그런 다음 숫자로 정렬 된 결과를 기대합니다.
2;1;3
3;1;2
1;2;3
3;2;1
1;3;2
2;3;1
3;10;3
알파벳순으로 정렬 된 것이 아닙니다.
2;1;3
3;1;2
3;10;3
1;2;3
3;2;1
1;3;2
2;3;1
이를 얻으려면 다음을 사용해야합니다 -n
.
sort --field-separator=';' -n -k 2,2 -k 1,1 -k 3,3 unsorted.csv
2,2
사용해야 하는 것을 언급 할 가치가 있습니다. only 2
가 사용되는 경우 sort
필드 2의 시작부터 끝까지 문자열 을 가져옵니다. 2,2
필드 만 사용되는지 확인합니다 2
.
답변
위의 Charlie의 대답은 Cygwin (정렬 버전 2.0, GNU textutils)에서 저에게 효과적이지 않았습니다.
sort -t"," -k2 -k1 -k1
답변
.. 누군가 ‘정렬’솔루션을 따랐지만 이제 한 줄에 하나의 고유 항목 (즉, 고유 항목의 상위 X 개) 이상을 얻고 자하는 경우 ‘정렬’을 사용하여 파일을 정렬하면 다음을 사용할 수 있습니다. 여기에서 만든 작은 앱 :
https://github.com/danieliversen/MiscStuff/blob/master/scripts/findTopUniques.java