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