2012-03-28 65 views
0

我需要做的是检索通过一个命令,比如链接:用sed和wget检索链接仅

wget --quiet -O - linkname

然后通过管道它的sed只是仅显示在页面上的链接不格式。

我到目前为止只显示所有html代码的一行。

+0

你能显示你为最后2行写的代码吗?你的预期输出是什么?展示样本 – 2012-03-28 01:12:04

+0

您可能还想查看[网页抓取](http://en.wikipedia.org/wiki/Web_scraping)工具。 – 2012-03-28 01:51:52

回答

1

我相信这是我一直在寻找。

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

可以通过管道将结果grep-o(比赛只)选项:

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

进去href="..."所有网址:

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

我正在寻找更多使用sed的方法。我需要学习它。我得到的是这个...但我想要一个全部的sed命令 - wget --quiet -O - link | grep -o' leeman24 2012-03-30 03:59:46

+0

在MacOS和其他BSD发行版中:'ggrep -oP'而不是'grep -oP'。GNU'grep' 。需要安装。 – 2017-08-14 08:08:07

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的查找包含网址线。如果你只想看本地页面,你可以添加更多的元素 ,所以没有http,但是相对路径为 。
  2. 第一sed的将在每个A HREF url标记的前面添加一个新行与\ n
  3. 通过与/一个替换它的sed该行中的第二“后会缩短每个URL的第二以换行符 两个SEDS标签会给你一个单行每个URL,但有垃圾,所以
  4. 第二届grep的HREF清理乱了
  5. 的sort和uniq会给你每个现有网址的一个实例目前在sourcepage.html