다음과 같은 정렬되지 않은 서버 목록이 있습니다.하이픈으로 연결된 이름을 사전 순으로 정렬 한 다음 숫자로 정렬하십시오.
bgsqlnp-z101
bgsqlnp-z102
bgsqlnp-z103
bgsqlnp-z2
bgsqlnp-z3
bgsqlnp-z5
dfsqlnp-z108
dfsqlnp-z4
bgsqlnp-z1
dfsqlprd-z8
fuqddev-z88
fuqhdev-z8
ghsbqudev-z18
heiappprod-z1
htsybprd-z24
sort
을 사용하여 파일을 읽을 때 다음을 얻으려고합니다.
bgsqlnp-z1
bgsqlnp-z2
bgsqlnp-z3
bgsqlnp-z5
bgsqlnp-z101
bgsqlnp-z102
bgsqlnp-z103
dfsqlnp-z4
dfsqlnp-z108
dfsqlprd-z8
fuqddev-z88
fuqhdev-z8
ghsbqudev-z18
heiappprod-z1
htsybprd-z24
나는 나의 -k
옵션에 대한 권리 keydef를 찾을 단지 수 아니에요. 다음은 내가 가졌던 가장 가까운 곳입니다.
sort -k2n -t"z"
bgsqlnp-z1
bgsqlnp-z101
bgsqlnp-z102
bgsqlnp-z103
bgsqlnp-z2
bgsqlnp-z3
bgsqlnp-z5
dfsqlnp-z108
dfsqlnp-z4
dfsqlprd-z8
fuqddev-z88
fuqhdev-z8
ghsbqudev-z18
heiappprod-z1
htsybprd-z24
숫자는 올바른 순서이지만 서버 이름은 정렬되지 않습니다. 다중 필드 keydef (-k1,2n
)를 사용하는 시도는 아무런 영향을 미치지 않는 것 같습니다 (정렬이 전혀 없습니다).
다음은 서버 이름에 대한 추가 정보입니다. 1) 이름에 "-z [1-200]"접미사가 있고 일부 번호가 반복됩니다. 2) 서버 이름이 다른 길이 (4 ~ 16 자) 'cut'을 사용하는 것이 의문의 여지가 없습니다
리눅스와 함께이 작업을 수행하는 방법을 찾을! (RHEL5) 'sed의/-z// '두 | 정렬 -k1,1 -k2g | sed 's// -z /'' 유닉스 (솔라리스)에서 할 수있는 방법이 있으니 .... – Signal15
'sed' stuff wrapping이 작동합니다. 솔라리스는 '-0 +1 +1 -2'와 같이 0 기반의 키 (/ usr/xpg4/bin/sort는 grok -k 옵션을 사용할 수 있습니다)를 사용하지만 정렬 키에'g' 옵션을 인식하지 못합니다 . 'man sort'는 네 친구 야. 행운을 빕니다. – shellter
'-g' 옵션은''sort''를 의미하며,''sort ''를 의미합니다. 번호가 100,1,2,3,30,4 대신 "올바른"순서 (1,2,3,4,30,100)로 표시됩니다. – Signal15