В последние несколько дней я пытаюсь разработать регулярное выражение, которое извлекает все внешние ссылки с веб-страниц, переданных ему с помощью grep.
Вот моя команда grep
grep -h -o -e "\(\(mailto:\|\(\(ht\|f\)tp\(s\?\)\)\)\://\)\{1\}\(.*\?\)" "/mnt/websites_folder/folder_to_search" -r
теперь grep, похоже, возвращает все после внешних ссылок в данной строке
Пример
если html-файл содержит что-то подобное в той же строке
Google
https://yahoo.com'>Yahoo
тогда данная команда grep возвращает следующий результат
http://www.google.com">Google</a><p><a href='https://yahoo.com'>Yahoo</a></p>
Идея в том, что если html-файл содержит более одной ссылки (irrespective in a,img etc
) в одной строке, тогда регулярное выражение должно извлекать только ссылки, а не все содержимое этой строки
Мне удалось разработать то же самое в rubular.com
регулярное выражение выглядит следующим образом
("|')(\b((ht|f)tps?:\/\/)(.*?)\b)("|')
при работе с вышеуказанным вводом
но я не могу повторить то же самое в grep
может кто-нибудь помочь
Я не могу изменить html-файл, поэтому не просите меня сделать это, так же как я не могу искать каждый конкретный тэг и проверять их атрибуты, чтобы получить внешние ссылки, поскольку это приводит к увеличению времени обработки, и мое приложение не требует, чтобы
Спасибо