スマートスクリプトがあり、サーバーの名前を確認してドメイン名を取得しています。たとえば、私はserver:example.ru01の名前を持っています。私は取得する必要があります:example.ru私のscipt:ハイフン付きのドメインに対して正規表現が動作しない
#!/bin/bash
hostname=example.com01
echo $hostname
reg0="\(\(\w*\.[a-z]*\)\|\(\w*\.[a-z]*\.[a-z]*\)\)"
domain=`expr match $hostname $reg0`
echo $domain
それはokです。出力では、私は持っています:
example.com01
example.com
しかし、私のインフラストラクチャでは、私はハイフンを持ついくつかのドメインがあります。例:test-test.com01。しかし、私のスクリプトではうまくいきません。この問題を解決するには?助けてください。
\(\(\w*\.[a-z_-]*\)\|\(\w*\.[a-z_-]*\.[a-z_-]*\)\)
私は正規表現でいくつかの変更を加えましたが、これは機能しません。どこにエラーがありますか?助けてください。ご注意いただきありがとうございます。あなたは正しい軌道に乗っている
「01」を削除しようとしていますか? – dawg
ドメイン名にアンダースコア '_'をつけることはできません。 – e0k
' reg0 = "\ w * \([.-] \ w * \)\ +" 'または' reg0 = "\ w \ ([.-] \ w \ + \)\ '" –