При написании одной штуки, понадобилось обрабатывать большое количество разных 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
Либо как отдельную функцию в рамках другого большого скрипта.