Wget 输出文档和标头到 STDOUT

我试图通过以下操作将文档正文及其标头输出到 STDOUT

wget -S -O - http://google.com

但它只显示 HTML 文档。

更新: 让它工作

wget --save-headers --output-document - http://google.com

wget --version显示我的版本是 GNU Wget 1.11.4 Red Hat modified

212941 次浏览

它在这里起作用:

    $ wget -S -O - http://google.com
HTTP request sent, awaiting response...
HTTP/1.1 301 Moved Permanently
Location: http://www.google.com/
Content-Type: text/html; charset=UTF-8
Date: Sat, 25 Aug 2012 10:15:38 GMT
Expires: Mon, 24 Sep 2012 10:15:38 GMT
Cache-Control: public, max-age=2592000
Server: gws
Content-Length: 219
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
Location: http://www.google.com/ [following]
--2012-08-25 12:20:29--  http://www.google.com/
Resolving www.google.com (www.google.com)... 173.194.69.99, 173.194.69.104, 173.194.69.106, ...


...skipped a few more redirections ...


[<=>                                                                                                                                     ] 0           --.-K/s
<!doctype html><html itemscope="itemscope" itemtype="http://schema.org/WebPage"><head><meta itemprop="image" content="/images/google_favicon_128.png"><ti


... skipped ...

也许您需要更新您的 wget (< code > ~ $wget-version GNU Wget 1.14构建在 linux-GNU 上

对我来说,wget -S -O - http://google.com和预期的一样,但是有一个警告: 头被认为是调试信息,因此它们被发送到 标准错误而不是标准输出。如果将标准输出重定向到文件或其他进程,则只能获取文档内容。

您可以尝试将标准错误重定向到标准输出,以此作为一种可能的解决方案:

$ wget -q -S -O - 2>&1 | grep ...

或者

$ wget -q -S -O - 1>wget.txt 2>&1

-q选项将取消进度条和 wget输出中其他一些烦人的聊天部分。

试试以下方法

wget -q -S -O - www.google.com 2>&1

注意后面的 -。这是 -O通常的命令参数的一部分,用于连接到一个文件,但是由于我们不使用 >来直接连接到一个文件,所以它会连接到 shell。你可以使用 -qO-或者 -qO -

这是行不通的:

wget -q -S -O - google.com 1>wget.txt 2>&1

因为重定向是从右到左计算的,所以这会将 html 发送到 wget.txt,将头发送到 STDOUT:

wget -q -S -O - google.com 2>&1 1>wget.txt

这对于我打印带头的响应是有效的:

wget --server-response http://www.example.com/