Извлечение подстроки из переменной среды

Я потратил много времени на решение этой проблемы и наконец. Это сработало! Сначала загрузите этот файл Файл зависимостей Распакуйте его, вы увидите файл debs в этой папке. Откройте компакт-диск терминала в этой папке и запустите dpkg -i * .deb После этого вы можете нормально установить VirtualBox.

6
26.02.2017, 22:31
4 ответа

Вы можете сделать это разными способами, некоторые из них:

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";)
2
27.01.2020, 20:22

Вы можете использовать расширение параметров, которое доступно в любой 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 :

$ echo "$FOO" | python -c 'import urlparse; import sys;  print urlparse.urlparse(sys.stdin.read()).netloc' 
unix.stackexchange.com
10
27.01.2020, 20:22

Может быть выполнено также с группами регулярных выражений:

$ a="http://unix.stackexchange.com/questions/ask"
$ perl -pe 's|(.*//)(.*?)(/.*)|\2|' <<<"$a"
unix.stackexchange.com
2
27.01.2020, 20:22

Если все URL-адреса следуют этому шаблону, у меня для вас есть этот короткий и уродливый прием:

echo "$FOO" | cut -d / -f 3
3
27.01.2020, 20:22

Теги

Похожие вопросы