mac : 열별로 데이터 정렬
Oct 23 2020
다음 형식의 2 개 열이 포함 된 긴 csv 파일이 있습니다.
RG_cne_1| 0.316571
RG_cne_10| 0.26924
RG_cne_100| 0.227538
RG_cne_1000| 0.385216
RG_cne_1001| 0.247508
RG_cne_1002| 0.496622
RG_cne_1003| 0.445685
RG_cne_1004| 0.53264
RG_cne_1005| 0.433687
RG_cne_1006| 0.295209
RG_cne_1007| 0.432938
RG_cne_1008| 0.368191
RG_cne_1009| 0.40916
RG_cne_101| 0.291027
RG_cne_1010| 0.389481
RG_cne_1011| 0.401816
RG_cne_1에서 마지막 파일 (RG_cne_1011)까지 첫 번째 열의 이름에 따라 다음 형식으로 데이터를 정렬 (줄 순서 변경)해야합니다.
RG_cne_1| its value
RG_cne_2| its value
RG_cne_3| its value
RG_cne_4| its value
RG_cne_5| its value
...
RG_cne_1011| its value
내 Mac에서 사용하려고했습니다.
LC_ALL=C sort -t'|' -k1,1g
그러나 숫자의 잘못된 정렬을 생성했습니다 (위에 표시된 것과 유사 : 1, 10, 100 등).
답변
3 Kusalananda Oct 23 2020 at 18:07
일반화 된 숫자 정렬 ( g)에서는 정렬 필드가 숫자로 시작해야하며 그렇지 않으면 문자열 비교를 사용합니다.
다음은 _대신 세 번째로 구분 된 필드 에서 숫자로 정렬하려고한다고 가정합니다 .
$ sort -t '_' -k 3,3n file
RG_cne_1| 0.316571
RG_cne_10| 0.26924
RG_cne_100| 0.227538
RG_cne_101| 0.291027
RG_cne_1000| 0.385216
RG_cne_1001| 0.247508
RG_cne_1002| 0.496622
RG_cne_1003| 0.445685
RG_cne_1004| 0.53264
RG_cne_1005| 0.433687
RG_cne_1006| 0.295209
RG_cne_1007| 0.432938
RG_cne_1008| 0.368191
RG_cne_1009| 0.40916
RG_cne_1010| 0.389481
RG_cne_1011| 0.401816