Используйте sed и wget для получения только ссылок - PullRequest
0 голосов
/ 28 марта 2012

Что мне нужно сделать, это получить ссылку с помощью такой команды, как:

wget --quiet -O - linkname

Затем перенаправить его в sed, чтобы он отображал ТОЛЬКО ссылки на странице, а не форматирование.

То, что я получил до сих пор, отображает только строки со всем html-кодом рядом с ним.

Ответы [ 3 ]

6 голосов
/ 28 марта 2012

Вы можете передать результат в grep с помощью опции -o (только для совпадения):

$ wget --quiet -O - http://stackoverflow.com | grep -o 'http://[^"]*'

Чтобы получить все URL внутри href="...":

grep -oP '(?<=href=")[^"]*(?=")'
1 голос
/ 30 марта 2012

Я считаю, что это то, что я искал.

sed -n "/href/ s/.*href=['\"]\([^'\"]*\)['\"].*/\1/gp"
0 голосов
/ 19 сентября 2012
grep "<a href=" sourcepage.html
  |sed "s/<a href/\\n<a href/g" 
  |sed 's/\"/\"><\/a>\n/2'
  |grep href
  |sort |uniq
  1. Первый grep ищет строки, содержащие URL-адреса.Вы можете добавить больше элементов после, если вы хотите просматривать только локальные страницы, поэтому не http, а относительный путь.
  2. Первый sed добавит новую строку перед каждым href urlтег с \ n
  3. Второй sed будет сокращать каждый URL после 2-го "в строке, заменяя его тегом / a на новую строку. Оба сэда будут давать вам каждый URL наодна строка, но есть мусор, поэтому
  4. 2-й grep href убирает беспорядок
  5. Сортировка и uniq даст вам один экземпляр каждого существующего URL-адреса, присутствующего в sourcepage.html
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...