我有一个未排序的服务器列表,如下所示:按字母顺序对连字符名称进行排序,然后按数字排序
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个字符) 因此使用'切'是不可能的
发现了如何在Linux做到这一点! (RHEL5) 'sed's/-z//'two | sort -k1,1 -k2g | sed's// -z /'' 希望有一种方法可以用UNIX(Solaris)...... – Signal15
'sed'的东西包装将起作用。当然,solaris使用的是基于零的密钥,(/ usr/xpg4/bin/sort可能是grok -k选项),比如'-0 +1 +1 -2',但我不认识排序键的'g'选项。 '人排序'是你的朋友。祝你好运。 – shellter
'sort'的'-g'选项是Linux特有的,意思是“字典排序”。数字以“正确”顺序(1,2,3,4,30,100)显示,而不是100,1,2,3,30,4。 – Signal15