Linux

唯一的集群名稱

  • October 18, 2019

我們有幾台集群伺服器,需要檢查每個集群中的一台伺服器。如何比較列表中的條目以僅返回每個集群中的一台伺服器?所有伺服器名稱如下

$$ a-z $$-$$ a-z $$-$$ a-z $$$$ 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

– 結果可以是集群中的任何伺服器。

您可以使用正則表達式使用 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 的行或最後一位數字至少為兩位的數字1(以匹配 11 或 21 等)。該-v選項用於選擇不匹配的行。

引用自:https://unix.stackexchange.com/questions/547354