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

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 ответ1

3

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


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

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

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

grep "\.ogg$" filewithlinks.txt

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .