一意のクラスタ名

一意のクラスタ名

複数のクラスタ化されたサーバーがあり、各クラスターで1つのサーバーを確認する必要があります。リスト内のエントリを比較して各クラスタに1つのサーバーのみを返すにはどうすればよいですか?すべてのサーバー名は[az]-[az]-[az][0-9].domain_nameに従います。

サーバーリストの例。

test-rac-1.domain_name
test-rac-2.domain_name
test-rac-3.domain_name
test-rac-dg1.domain_name
test-rac-dg2.domain_name
test-rac-dg3.domain_name
qat-rac-1.domain_name
qat-rac-2.domain_name
qat-rac-3.domain_name
ser-ser-ser.domain_name
long-serv-name.domain_name

結果サーバーのリスト。

test-rac-1.domain_name
test-rac-dg1.domain_name
qat-rac-1.domain_name
ser-ser-ser.domain_name
long-serv-name.domain_name

- 結果はクラスタ内の任意のサーバーになります。

ベストアンサー1

正規表現を使用して、grepを使用してすべての行をフィルタリングできます。

grep '[a-z-]1\?\.domain_name' file > newfile

1これにより、前に文字またはマイナス記号があり、オプションで ".domain_name" を含むすべての行が返されます。


逆の操作は、「.domain_name」の前の数字> 1を含むすべての行を削除することです。

grep -v '\([2-9]\|[0-9]1\)\.domain_name' file > newfile

これは、「.domain_name」の前の最後の数字が2〜9、または最後の数字が少なくとも2桁1(11または21などに一致)の行と一致します。この-vオプションは、一致しない行を選択するために使用されます。

おすすめ記事