Si, en este caso en el que el requisito es cualquier clase de url y no solamente enlaces, una expresión regular va mejor, aunque más compleja.
Supongo que algo rápido como 'http(s)?://[^ "><]+? (cadenas comenzando con http o https y luego todo hasta encontrar un espacio, una comilla o arcos de apertura o cierre de una etiqueta) sería un buen comienzo, aunque seguro anda por la web alguna mejor.
Aunque claro: falla con rutas relativas. Como las rutas relativas son usadas casi siempre en enlaces, podrías hacer otro patrón tal que obtenga los href de cada enlace, y si no comienza con http lo considere una ruta relativa, y la "complete" como debe ser.
Por acá un ejemplo de cómo se puede hacer con wget y awk:
http://superuser.com/questions/47089...-a-file-server