【问题标题】:Saving files to separate html file before using grep/sed在使用 grep/sed 之前将文件保存到单独的 html 文件
【发布时间】:2015-10-08 16:36:34
【问题描述】:

我正在开发一个可以让我浏览一些网址的项目。现在我有:

#!/bin/bash
for file in $1
do
wget $1 >> output.html
cat output.html | grep -o '<a .*href=.*>' | 
sed -e 's/<a /\n<a /g' |
sed -e 's/<a .*href=['"'"'"]//' -e 's/["'"'"'].*$//' -e '/^$/ d' |
grep 'http'
done

我希望用户能够按如下方式运行脚本:

./navigator google.com

这会将url的源代码保存到一个新的html文件中,然后运行我的grep/seds,然后保存到一个新文件中。

现在我正在努力将 url 保存到一个新的 html 文件中。救命!

【问题讨论】:

  • 您可以使用:wget "$1" -O "output-$1.html"
  • 太棒了!有没有办法不显示wget的过程?要在幕后做吗?我希望它看起来很流畅,例如 ./navigator google.com urls ... urls ... 与 ./navigator google.com 解析 google.com ....
  • nv = 不冗长...,-q = 安静
  • wget -q "$1" -O "output-$1.html"
  • @anubhava 看起来你已经回答了这个问题。最好将您的答案复制到答案字段中,以便迈克可以投票/接受它。

标签: bash curl sed grep wget


【解决方案1】:

要为每个 URL 创建一个新文件,请在输出文件名中使用 url 作为wget -O 选项:

#!/bin/bash

for url; do
   out="output-$url.html"
   wget -q "$url" -O "$out"

   grep -o '<a .*href=.*>' "$out" | 
     sed -e 's/<a /\n<a /g' |
     sed -e 's/<a .*href=['"'"'"]//' -e 's/["'"'"'].*$//' -e '/^$/ d' |
     grep 'http'
done

PS:根据上面的 cmets,在 wget 中添加了 -q 以使其完全安静。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-19
    • 1970-01-01
    • 2020-08-05
    • 2016-06-11
    • 1970-01-01
    • 1970-01-01
    • 2014-07-27
    • 2023-03-03
    相关资源
    最近更新 更多