Quiero analizar ciertas URL de un archivo guardadoHTML-archivo con un simple script/comando bash, para poder descargarlos más wget
adelante.
Lo que tengo hasta ahora es:
awk 'BEGIN{ RS="<a *href *= *\""} NR>2 {sub(/".*/,"");print; }' index.html >> url-list.txt
que escribe cada enlace que está dentro de mi archivo html en un documento de texto ordenado.
Sin embargo, lo que necesito son sólo enlaces específicos.
- de un determinado dominio
- todos los archivos .ogg, por ejemplo
todo lo que al final quedaría así:
http://www.foo.com/(randomfolder)/(randombasename).ogg
o
http://subdominio.foo.com/(carpeta aleatoria)/(otra subcarpeta aleatoria)/(nombrebasealeatoria).ogg
¡gracias de antemano!
Respuesta1
Dice que necesita hacerlo "en Bash", pero parece que quiere decir "en un script" y no "usando sintaxis pura de Bash" (hay una diferencia). Supongo que quieres el significado "en un guión".
Si ha guardado todos los enlaces en líneas separadas en un documento, puede seleccionar todos los enlaces en el dominio http://www.example.com/
con, por ejemplo,
grep "^http://www\.example\.com/" filewithlinks.txt
o todos los enlaces que terminan en .ogg
con
grep "\.ogg$" filewithlinks.txt
(La barra invertida que precede a los puntos sirve para escapar del .
signo " ", que de otro modo significa "cualquier carácter". " \.
" en su lugar significa un punto literal. Sin escapar, también coincidirá con los enlaces que terminan en, por ejemplo, "logg").
También puede hacer coincidir líneas directamente en el awk
comando, pero creo que sería más complicado cambiarlo de vez en cuando. La forma más sencilla es guardar la lista completa de enlaces en un archivo como lo hace y luego simplemente buscar el archivo, por ejemplo, grep
como se indica arriba. Entonces tampoco tendrá que descargar y analizar el documento nuevamente si desea cambiar el patrón coincidente.