使用sed和wget仅检索链接

时间:2012-03-28 00:53:27

标签: linux bash sed

我需要做的是通过以下命令检索链接:

wget --quiet -O - linkname

然后将其传输到sed,只显示页面上的链接而不是格式化。

到目前为止,我只显示了包含所有html代码的行。

3 个答案:

答案 0 :(得分:6)

您可以使用grep(仅限匹配)选项将结果传递给-o

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

要获取href="..."内的所有网址:

grep -oP '(?<=href=")[^"]*(?=")'

答案 1 :(得分:1)

我相信这就是我所寻找的。

sed -n "/href/ s/.*href=['\"]\([^'\"]*\)['\"].*/\1/gp"

答案 2 :(得分:0)

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将使用\ n
  3. 在每个 a href url标记前添加换行符
  4. 第二个sed将使用换行符替换为带有 / a 标记的行中的第二个“网址后缩短每个网址 两个seds都会在一行上给你每个url,但是有垃圾,所以
  5. 第二个grep href清除了混乱
  6. sort和uniq将为您提供sourcepage.html
  7. 中每个现有网址的一个实例