주어진 탭으로 구분된 데이터를 정렬하고 싶습니다.
- 첫 번째 수준은 열 1이며 오름차순으로 정렬됩니다.
- 두 번째 수준은 열 2도 오름차순으로 정렬된다는 것입니다(그러나 조건부). 건강 상태:3열은 고유한 값으로 그룹화되어야 하지만 2열의 정렬 순서도 최대한 유지해야 합니다(최소 범위가 위쪽에 있음).
- 3열은 전혀 정렬되지 않았지만 그룹화되어야 합니다.
입력 데이터:
2 15881764 9 C|T
2 15881767 9 C|C
2 15881989 4 C|C
2 15882091 4 G|T
2 15882451 9 C|T
2 15882454 9 C|T
2 15882493 9 C|T
2 15882505 6 A|T
3 16882450 6 C|T
3 16882594 6 C|T
3 16882633 6 C|T
3 16882755 6 A|T
예상 출력:
2 15881764 9 C|T
2 15881767 9 C|C
2 15882451 9 C|T
2 15882454 9 C|T
2 15882493 9 C|T
2 15881989 4 C|C
2 15882091 4 G|T
2 15882505 6 A|T
3 16882450 6 C|T
3 16882594 6 C|T
3 16882633 6 C|T
3 16882755 6 A|T
모든 UNIX 기반 유틸리티가 가능하지만 가독성을 위해서는 sort 및 awk가 더 좋습니다.
답변1
sort -k1,1n -k3,3n -k2,2n file
먼저 열 1에서 숫자순으로 정렬합니다.
동점인 경우 3열의 숫자로 정렬하세요.
동점인 경우 2열의 숫자로 정렬하세요.
답변2
sort
제 생각에는 세 번째 필드에서 하나를 수행하면 문제가 해결될 것입니다. sort -n -k3
최선을 다해 할 수 있는 것입니다.
sort -t$'\t' -n -k3 -k2 -k1 file
당신이 보면man
페이지sort
-k
기본적으로 정렬할 공백으로 구분된 각 행을 나타내는 필드가 표시됩니다 . 이 -t
플래그를 사용하면 마지막으로 편집한 문자를 기준으로 구분 기호를 설정할 수 있습니다 Tab .