1

次のようなソートされていないサーバーリストがあります。

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。これが私が得ることができた最も近いものです。

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 文字) したがって、「カット」を使用することは問題外です

4

1 に答える 1

1

sed を使用して、複数文字の区切り文字を回避できます。各ソート キー定義の後で、数値順と辞書順を切り替えることができます。複数のキーに対して複数の -k オプションを指定する必要があることに注意してください。詳細については、man ページを確認してください。

このようなもの:

sed 's/-z/ /' file | sort -k2,2n -k1,1d | sed 's/ /-z/'
于 2013-09-25T17:30:49.327 に答える