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