bashまたはzshスクリプトでunix.stackexchange.com
URLが環境変数にある場合は、URL(たとえば)からホストをどのように抽出できますか?http://unix.stackexchange.com/questions/ask
答え1
すべてのPOSIX互換シェルで利用可能なパラメータ拡張を使用できます。
$ export FOO=http://unix.stackexchange.com/questions/ask
$ tmp="${FOO#*//}" # remove http://
$ echo "${tmp%%/*}" # remove everything after the first /
unix.stackexchange.com
より安定しているがより醜いアプローチは、実際のURLパーサーを使用することです。例は次のとおりですpython
。
$ python3 -c 'import sys; from urllib.parse import urlparse; print(urlparse(sys.argv[1]).netloc)' "$FOO"
unix.stackexchange.com
答え2
URLがすべてこのパターンに従う場合は、短くて見苦しい方法をお知らせします。
echo "$FOO" | cut -d / -f 3
答え3
さまざまな方法でこれを行うことができ、そのいくつかは次のとおりです。
export _URL='http://unix.stackexchange.com/questions/ask'
echo "$_URL" | sed -ne 'y|/|\n|;s/.*\n\n/;P'
expr "$_URL" : 'http://\([^/]*\)'
echo "$_URL" | perl -lpe '($_) = m|^http://\K[^/]+|g'
perl -le 'print+(split m{/}, $ENV{_URL})[2]'
(set -f; IFS=/; set -- $_URL; echo "$3";)
答え4
正規表現グループを使用してこれを実行することもできます。
$ a="http://unix.stackexchange.com/questions/ask"
$ perl -pe 's|(.*//)(.*?)(/.*)|\2|' <<<"$a"
unix.stackexchange.com