2013-04-30 2 views
4

목록 :여러 필드와 숫자 정렬

sysbench-size-256M-mode-rndrd-threads-1 
sysbench-size-256M-mode-rndrd-threads-16 
sysbench-size-256M-mode-rndrd-threads-4 
sysbench-size-256M-mode-rndrd-threads-8 
sysbench-size-256M-mode-rndrw-threads-1 
sysbench-size-256M-mode-rndrw-threads-16 
sysbench-size-256M-mode-rndrw-threads-4 
sysbench-size-256M-mode-rndrw-threads-8 
sysbench-size-256M-mode-rndwr-threads-1 
sysbench-size-256M-mode-rndwr-threads-16 
sysbench-size-256M-mode-rndwr-threads-4 
sysbench-size-256M-mode-rndwr-threads-8 
sysbench-size-256M-mode-seqrd-threads-1 
sysbench-size-256M-mode-seqrd-threads-16 
sysbench-size-256M-mode-seqrd-threads-4 
sysbench-size-256M-mode-seqrd-threads-8 
sysbench-size-256M-mode-seqwr-threads-1 
sysbench-size-256M-mode-seqwr-threads-16 
sysbench-size-256M-mode-seqwr-threads-4 
sysbench-size-256M-mode-seqwr-threads-8 

I 모드 (rndrd, rndwr 등)으로 정렬하고 싶은 다음 번호 :

sysbench-size-256M-mode-rndrd-threads-1 
sysbench-size-256M-mode-rndrd-threads-4 
sysbench-size-256M-mode-rndrd-threads-8 
sysbench-size-256M-mode-rndrd-threads-16 
sysbench-size-256M-mode-rndrw-threads-1 
sysbench-size-256M-mode-rndrw-threads-4 
sysbench-size-256M-mode-rndrw-threads-8 
sysbench-size-256M-mode-rndrw-threads-16 
.... 

내가 시도한 루프를 다음 그러나 그것은 숫자에 의해 정렬있어하지만 난 필요 순서 1,4,8,16 같은 :

$ for f in $(ls -1A); do echo $f; done | sort -t '-' -k 7n 

편집 :

숫자 정렬 (-n)은 숫자 (1,1,1,1,4,4,4,4 ...)로 정렬하지만 1,4,8,16,1과 같은 시퀀스가 ​​필요합니다. 더 컬럼에 의해 4,8,16 ...

답변

4

출력을 파이프 할 때 ls-1 인수 인 것처럼 for 루프는 완전히 불필요합니다. 이 첫 번째 키는 시작 열 (5)에서 종료하고, 두 번째 키는 시작 및 7 열에서 끝나는 숫자 인

ls -A | sort -t- -k 5,5 -k 7,7n 

을 산출한다.

5

정렬 :

sort -t- -k5,5 -k7n 

차 종류는 5 열입니다 일곱 번째 열에서 번호로 차 분류는 (그리고 나머지, 그 이유는 5,5입니다) .

+0

이 명령은 받아 들여지지 만'n '(GNU sort 8.20 사용)을 자동으로 무시하는 것으로 보입니다. – msw

+0

@msw : 죄송합니다. 나는 'n'을 잘못 짚었 어! – choroba