При написании одной штуки, понадобилось обрабатывать большое количество разных URL выдёргивая из них только имя домена без www, протокола, логина, пароля и полного пути.
Для решения задачки можно воспользоваться вот таким вот скриптом:
#!/usr/bin/env bash url="$1"; url="${url#https://}"; url="${url#http://}"; url="${url#scp://}"; url="${url#ftp://}"; url="${url#sftp://}"; url="${url#*:*@}"; url="${url#*@}"; url="${url%%/*}"; echo "$url"; exit 0;
В процессе выполнения скрипта, сначала отбрасывается протокол, затем при наличии логина и пароля происходит избавление от них, и завершается всё удалением полного пути из URL. Использовать можно, например так:
# while read line; do ./geturl.sh $line; done < ../all.url.list
Либо как отдельную функцию в рамках другого большого скрипта.