ホスト名を切り取る正規表現

ホスト名を切り取る正規表現

私のホスト名を左から2つの「部分」に切り捨てようとしています。ホスト名は次のとおりです。

servername-01.location.domain.com

または

servername-01.location.test.domain.com

次のように減らす必要があります。

servername-01.location

一部のドメイン名には長い「サフィックス」があるため、最初の2つの「部分」が必要ですが、2番目の「.」は含まれていません。

次のコマンドを使用してサフィックスからホスト名を削除しましたが、サフィックスのサブドメインの数が変更される可能性があるため、もう機能しないことに気づきました。

${HOSTNAME%.*.*}

どんな助けでも大変感謝します!

答え1

あなたはそれを使用することができます

SHORTHOST=$(cut -d "." -f 1-2 <<< $HOSTNAME)

サイクルごとに元のホスト名をフィールドに切り捨て、.最初の2つだけを印刷します。

答え2

実際、パラメータ拡張によってこれらの可変部分を除去することは困難です。しかし、バイパスの方法があります。まず、最初の2つのセグメントを削除し(実際には維持したい)、尾部分を残してから次のものを使用できます。それ元の文字列から削除する部分として。

だから:

$ hostname=servername-01.location.test.domain.com
$ echo "${hostname%.${hostname#*.*.}}"
servername-01.location

.${hostname#*.*.}はい.test.domain.com、次は${hostname%.test.domain.com}そうですservername-01.location。)

関連情報