複数のクラスタ化されたサーバーがあり、各クラスターで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
オプションは、一致しない行を選択するために使用されます。