Разбор конкретных URL из локального файла HTML

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

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 как указано выше. Тогда вам также не придется загружать и анализировать документ снова, если вы хотите изменить соответствующий шаблон.

Другие вопросы по тегам