Как я могу извлечь или получить доменное имя из строки 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