Me gustaría enumerar todos los dominios a los que hace referencia nuestro código fuente, lo que permite la limitación de encontrar solo aquellos a los que se hace referencia de forma estática y comienzan con https?://. Por ejemplo, he probado lo siguiente:
find -s [^.]* -print0 | xargs -0 sed -En 's/.*https?:\/\/([a-z0-9\-\.\_]+).*/\1/p' | sort | uniqEl error es que, cuando hay más de un dominio en una sola línea, solo se devolverá uno. ¿Se puede remediar esto con herramientas de shell simples, es decir, sin analizar completamente el HTML?
La expresión regular .* es codiciosa, por lo que ponerla tanto al principio como al final de su expresión regular descartará cualquier otra URL que esté en la misma línea.
El grep estándar no puede imprimir grupos de captura como ([a-z0-9-._]+) , pero si tiene perl , reemplace esto:
sed -En 's/.*https?:\/\/([a-z0-9\-\.\_]+).*/\1/p'con este:
perl -nle 'print $1 while m{https?://([a-z0-9-._]+)}g'https?://([a-z0-9-._]+) es nuestra nueva expresión regular que coincide solo con lo que estamos buscando, manteniendo cada línea intacta.while m{...}g itera a través de cada coincidencia de la expresión regular.print $1 muestra la primera captura de nuestra expresión regular ([a-z0-9-._]+)Su comando final será:
find -s [^.]* -print0 | xargs -0 perl -nle 'print $1 while m{https?://([a-z0-9-._]+)}g' | sort | uniq