【问题标题】:wget grep sed to extract links and save them to a filewget grep sed 提取链接并将它们保存到文件中
【发布时间】:2014-03-19 00:20:44
【问题描述】:

我需要从http://en.wikipedia.org/wiki/Meme 下载所有页面链接,并使用一个命令将它们保存到一个文件中。

第一次使用命令行,所以我不确定要使用的确切命令、标志等。我只知道该怎么做,不得不四处寻找 href 的含义。

wget http://en.wikipedia.org/wiki/Meme -O links.txt | grep 'href=".*"' | sed -e 's/^.*href=".*".*$/\1/'

文件中链接的输出不需要采用任何特定格式。

【问题讨论】:

  • 考虑只使用links -dump 或lynx -dump。
  • @cajole0110 如果将文本保存到文件中,则不能(通常)通过管道传输文本。这就是为什么 BMW 的任何一个命令都有效但您的命令无效的原因。
  • +1 提前做好研究。

标签: bash sed grep pipe wget


【解决方案1】:

使用 gnu grep:

grep -Po '(?<=href=")[^"]*' links.txt

或使用 wget

wget http://en.wikipedia.org/wiki/Meme -q -O - |grep -Po '(?<=href=")[^"]*'

【讨论】:

  • 您可能还想添加-q 标志,以防止打印与实际输出交错的进度条(进度条打印到stderr,因此它不会干扰,它只是看起来很时髦)。
【解决方案2】:

您可以使用wget 的蜘蛛模式。有关示例,请参见此 SO 答案。

wget spider

【讨论】:

    【解决方案3】:
    wget http://en.wikipedia.org/wiki/Meme -O links.txt | sed -n 's/.*href="\([^"]*\)".*/\1/p'
    

    但这每行只需要 1 个 href,如果超过 1 个,其他的会丢失(与您的原始行相同)。您还忘记了在您的原始 sed 第一模式中有一个组 (\( -> \)),所以 \1 什么都不引用

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多