5/5 - (2 голоса)

Как я могу извлечь или получить доменное имя из строки URL (например, https://itfb.com.ua/index.php), используя сценарии оболочки bash в Linux или подобной Unix операционной системе?

Вы можете использовать стандартные команды Unix, такие как sed, awk, grep, Perl, Python и другие, чтобы получить имя домена из URL. Нет необходимости писать регулярное выражение. Это довольно просто.

Пусть используются различные команды и опция для захвата части домена из данной переменной в Linux или Unix-подобной системе.

Получить доменное имя из полного URL

Предположим, что ваше имя url хранится в переменной оболочки bash, такой как$ x:
x='https://itfb.com.ua/faq/copy-command/'
Вы можете использовать awk следующим образом:

echo "$x" | awk -F/ '{print$3}'
### OR ###
awk -F/ '{print$3}' <<<$x

Пример результата:

 itfb.com.ua

Извлечь доменное имя из URL с помощью sed

Вот пример команды sed:

url="https://itfb.com.ua/faq/copy-command"
echo "$url" | sed -e 's|^[^/]*//||' -e 's|/.*$||'

Извлечь доменное имя из URL с помощью замены параметра оболочки bash

Другой вариант — использовать подстановку параметров оболочки bash :

 # Моя переменная оболочки
F = "https://itfb.com.ua/faq/copy-command/"

## Удалить часть протокола url ##
F = "${f#http://} "
F = "${f#https://} "
F = "${f#ftp://} "
F = "${f#scp://} "
F = "${f#scp://} "
F = "${f#sftp://} "

## Удалить имя пользователя и / или имя пользователя: пароль часть URL ##
F = "${f#*: * @} "
F = "${f#* @} "

## Удалить остальную часть URL ##
F =$ {f %% / *}

## Показывать только имя домена ##
Echo "$f "

Пример сценария оболочки

Сценарий оболочки для удаления URL-адресов из Cloudflare путем сопоставления части имени домена :

#!/bin/bash
zone_id=""
api_key=""urls="$@"
bon=$(tput bold)
boff=$(tput sgr0)
c=1
[ "$urls" == "" ] && { echo "Usage: $0 url"; exit 1; }clear
echo "Purging..."
echo
for u in $urls
do
echo -n "${bon}${c}${boff}.${u}: "
## Get domain name ##
d="$(echo $u | awk -F/ '{ print $3}')"
## Set API_KEY, Email_ID, and ZONE_ID as per domain ##
case $d in
www.cyberciti.biz) zone_id="ID_1"; api_key="MY_KEY_1"; email_id="[email protected]";;
theos.in) zone_id="ID_2"; api_key="MY_KEY_2"; email_id="[email protected]";;
*) echo "Domain not configured."; continue;;
esac
## Do it ##
curl -X DELETE "https://api.cloudflare.com/client/v4/zones/${zone_id}/purge_cache" \
-H "X-Auth-Email: ${email_id}" \
-H "X-Auth-Key: ${api_key}" \
-H "Content-Type: application/json" \
--data "{\"files\":[\"${u}\"]}"
echo
(( c++ ))
done
echo