я принципиально хочу, чтобы извлечь части из URL-адрес в различные переменные окружения для последующего использования, поэтому я ожидал, чтобы быть в состоянии сделать что-то вроде этого:Как извлечь несколько переменных среды из регулярного выражения в Bash?
echo "my-app.domain.com:8080" | \
sed -r 's/((\w+)\.)?(\w+\.\w+)(\:(\d+))?/\2\n\3\n\5/g' | \
read SUBDOMAIN DOMAIN PORT
Однако это не похоже на работу (и какой-то причине «:» от порта всегда выводится в «\ 5»):
sh-4.2# echo "my-app.domain.com:8080" | \
sed -r 's/((\w+)\.)?(\w+\.\w+)(\:(\d+))?/\2\n\3\n\5/g'
my-app
domain.com
:8080
что более странно для меня является то, что если я печатаю новую строку после \ 5, то это будет выходной :
sh-4.2# echo "my-app.domain.com:8080" | sed -r 's/((\w+)\.)?(\w+\.\w+)(\:(\d+))?/\2\n\3\n\5\n/g'
my-app
domain.com
:8080
В любом случае, при использовании read, ни одна из переменных не установлена ... кажется, я делаю несколько ошибок, но не могу точно определить, что именно.
Это ... прекрасный – dukeofgaming