次の形式の文字列からドメインを抽出する bash スクリプトを作成しています。
....ドメイン名 example.com...
example.comを出力したい。
マッチングを使用してこのドメイン名を出力するにはどうすればよいですか?
ドメインのパターンを文字列内でより適切に一致させるには、ドメインのパターンをより適切に定義する必要があります。その後、grepを使用して、ドメインパターンを説明する正規表現を照合できます。
domain=`echo "....domain name xxx.com..." | grep -om 1 -G "[^ ]*\.com"`
ドメイン名が「.com」で終わると想定せずに
grep -oP '(?<=domain name )\S+'
意味: 文字列「ドメイン名」に続く一連の非空白文字を探します
GNU でgrep
echo "random words domain name example.com random words" | grep -oP "domain name \K[^ ]+\.com"
形式があなたの言うとおりである場合、これで十分です。
awk '/domain name/{print $3}'
文字列が変数に格納されている場合は、次のように使用できます。
awk '/domain name/{print $3}' <<< $string_name
文字列が他の文字列と一緒にファイルに保存されている場合は、1行に1つずつ:
awk '/domain name/{print $3}' < input_file > output_file