Анализ определенных URL-адресов из локального HTML-файла

Анализ определенных URL-адресов из локального HTML-файла

Я хочу проанализировать определенные URL-адреса из сохраненногоhtml-файл с простым bash-скриптом/командой, чтобы я мог загрузить их через wgetlaters.
Что у меня есть на данный момент:

awk 'BEGIN{ RS="<a *href *= *\""} NR>2 {sub(/".*/,"");print; }' index.html >> url-list.txt

который записывает каждую ссылку, находящуюся внутри моего html-файла, в аккуратный txt-документ.

Однако мне нужны только конкретные ссылки.

  • из определенного домена
  • все файлы .ogg например

все, что в итоге будет выглядеть так:

http://www.foo.com/(randomfolder)/(randombasename).ogg

или

http://subdomain.foo.com/(randomfolder)/(anotherrandomsubfolder)/(randombasename).ogg

заранее спасибо!

решение1

Вы говорите, что вам нужно сделать это «в Bash», но, похоже, вы имеете в виду «в скрипте», а не «используя чистый синтаксис Bash» (есть разница). Я предполагаю, что вы хотите значение «в скрипте».


Если вы сохранили все ссылки в отдельных строках документа, вы можете выбрать все ссылки на домене, http://www.example.com/например, с помощью

grep "^http://www\.example\.com/" filewithlinks.txt

или все ссылки, заканчивающиеся .oggна

grep "\.ogg$" filewithlinks.txt

(Обратная косая черта перед точками используется для экранирования .знака " ", который в противном случае означает "любой символ". \.Вместо этого " " означает буквальную точку. Без экранирования вы также будете сопоставлять ссылки, заканчивающиеся, например, на "logg".)

Вы также можете сделать сопоставление строк непосредственно в awk команде, но это будет сложнее время от времени менять, я полагаю. Самый простой способ — сохранить полный список ссылок в файле, как вы это делаете, а затем просто выполнить поиск в файле, например, grepкак указано выше. Тогда вам также не придется загружать и анализировать документ снова, если вы захотите изменить шаблон сопоставления.

Связанный контент