Я хочу иметь только https-Link в отдельном файле. Как это сделать, не получив полную строку кода, только ссылки?
1 ответ
Прежде всего, не пытайтесь анализировать HTML с помощью регулярных выражений ...
XPath может получить то, что вы хотите - он был разработан специально для этого:
//a/@href
Затем, чтобы использовать XPath с xmllint (будут существовать другие утилиты):
xmllint --shell --html file.html <<<'cat //a/@href'
Это даст вам кучу вещей, включая подсказки (/ >), имя атрибута (href="...") и разделители (-------) ... так что отфильтруйте их, сортируйте, и получите список уникальных URL:
xmllint --shell --html file.html <<<'cat //a/@href' \
| sed '/^ href="/!d;s/^ href="//;s/"$//' \
| sort \
| uniq
Все без grep .
Здесь мы используем sed для:
/^ href="/!d- удалить все строки, которые не соответствуют регулярному выражению^ href="s/^ href="//- убрать префиксs/"$//- убрать суффикс
В качестве альтернативы вы можете использовать CSS-селекторы вместо XPath с tq (проект Python):
tq 'a' -a href < file.html
Примечание: после обсуждения вокруг grep я предположил Unix ... Если у вас есть Cygwin или WSL, то это, вероятно, будет работать там же.
xmllint (утилита из libxml2) имеет версию для Windows.

