小编Utk*_*tku的帖子

如何解压缩 gzip 压缩的 HTTP 响应?

文件req包含请求头:

GET /cd/E11882_01/server.112/e41084/toc.htm HTTP/1.1^M
Host: docs.oracle.com^M
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8^M
Accept-Language: en-US,en;q=0.5^M
Accept-Encoding: gzip, deflate^M
Connection: keep-alive^M
^M
Run Code Online (Sandbox Code Playgroud)

我跑:

cat req | nc docs.oracle.com 80 > resp
Run Code Online (Sandbox Code Playgroud)

resp 包含:

HTTP/1.1 200 OK^M
Server: Apache^M
ETag: "726bf43b293f9fc8eac0f8f6b7be3a84:1457459134"^M
Last-Modified: Fri, 04 Mar 2016 14:26:34 GMT^M
Accept-Ranges: bytes^M
Content-Type: text/html^M
Vary: Accept-Encoding^M
Content-Encoding: gzip^M
Date: Sat, 18 Jun 2016 07:04:06 GMT^M
Content-Length: 13163^M
Connection: keep-alive^M
^M
^_<8b>^H^@^@^@^@^@^@^@Å}ysã8<92>ïÿó)¸Þ<88>}3ïµËâMÎvy<83>â%ªuµ(Õ1^[^[
Z¢mvÉ<92>[Gu¹?ýf<82>^D^Hɦ  Òîx^[³]¶¬ü^AH$^R<99><89>Dâç^?óÆîìëÄ<97>î^O^Oëë¿ý<8c>ÿHëds÷ñ"Ý\à^Gi²<82>^?^^ÒC^Bß9<^¦¿^_³ï^_/¾\Î<9d>Kwûð<98>^\²<9b>uz!-·<9b>Cº9|¼<88>ü<8f>éê.½ T<9b>ä!ýxñ=KÿxÜî^NÜ^WÿÈV<87>û<8f>«ô{¶L/É/?IÙ&;dÉúr¿LÖéGùCç'é!ù<91>=^\^_èG^Lwy<9f>ìö)à^\^O·<97>^V~|È^NëôÚK^NÉM²O¥ø×<81>4<80>¡^\<93>»T<9a>¦·é.Ý,SéRró^^ì^?¾Ê)N:z<97>nÒ]rØî¸<9e><8e>wÉr<9d>J<9e>3íJ_z³á^@!¾§»Cº<93>þ>Ü®R飴Ú.<8f>^Oðí^?@^CÃtw<97>®¤Oén<9f>m7<92>Ü1õ^Kéê´<9d>Õ^R¨^_ö^_<96>»49¤+®5¥#^[<97>^]ù²£Ïô^?jÆ?^Uë_ϨwÛ<9b>íaÏ^Q%ëue^Sd<94>Üwk8T<89><93>­<80><»ÍR<9e>7¾&w,í²£U<93>í^KF<8c>o9:h{^Zä4ëlóMÚ¥køð<90> <88>ÜïÒÛ<8f>^W^_>\Áÿ²Í*ýñ^AäòB"ãøxÑÛ>@^_^OO<8f>ðó!ýq¸B¡=Gr·<8f>O»ìîþ^LmµÜ><l7<84>äj    _9Aæ<88>^<82>ÿÛÏûå.{<^T^?L^^^_×Ù^Rä^_ð~K¾'ù^_/$i¿[<9e>·÷Ûþ

   ...continues...
Run Code Online (Sandbox Code Playgroud)

现在,显然响应正文是 gzip 格式。为了解压,我将响应正文复制到resp-body. 所以,resp-body包含:

^_<8b>^H^@^@^@^@^@^@^@Å}ysã8<92>ïÿó)¸Þ<88>}3ïµËâMÎvy<83>â%ªuµ(Õ1^[^[
Z¢mvÉ<92>[Gu¹?ýf<82>^D^Hɦ …
Run Code Online (Sandbox Code Playgroud)

gzip http

4
推荐指数
1
解决办法
2万
查看次数

有什么事情可以通过控制台登录来完成,但不能通过 SSH 登录来完成吗?

在 SSH 连接上,您可以执行在控制台连接上可以执行的所有操作吗?

换句话说,在启动系统并在其上安装和配置 SSH 服务器后,您是否可以通过 SSH 与该系统进行所有进一步的交互,而不使用控制台(除非 SSH 服务器由于某种原因不可用) )?

ssh console

4
推荐指数
1
解决办法
1539
查看次数

我可以确定 awk 变量的类型吗?

我有 awk 的 gawk 版本。在gawk手册的这一部分中,说明了awk变量具有“属性”,用于确定在各种操作中如何对待它们。

例如," +3.14"通过解析输入获得的形式的字符串具有STRNUM属性,这使得它在与数字进行比较时表现为数字,而在 awk 程序中定义的相同字符串没有该属性。

OTOH,像这样的字符串"3.14"显然具有STRNUM属性,即使它是在程序中定义的,因为代码x = "3.14" { print x == 3.14 }打印 1。而如果我们将其定义为"+3.13"or " 3.14",它没有STRNUM属性,因为x = "+3.14" { print x == 3.14 }orx = " 3.14" { print x == 3.14 }打印 0。

我认为变量类型的这种简洁性可能会导致细微的错误。因此,为了帮助调试这种情况,有没有办法了解变量具有什么类型的“属性”?即,我们可以了解变量的类型吗?

awk variable gawk

3
推荐指数
2
解决办法
5706
查看次数

命令行选项的顺序在 Perl 中重要吗?

以下命令按预期工作:

perl -lne 'print $1 if /install\(TARGETS (.*) RUNTIME DESTINATION bin\)/' CMakeLists.txt
Run Code Online (Sandbox Code Playgroud)

这个也有效:

perl -nle 'print $1 if /install\(TARGETS (.*) RUNTIME DESTINATION bin\)/' CMakeLists.txt
Run Code Online (Sandbox Code Playgroud)

但是,这个错误:

perl -nel 'print $1 if /install\(TARGETS (.*) RUNTIME DESTINATION bin\)/' CMakeLists.txt
Run Code Online (Sandbox Code Playgroud)

错误信息是:

如果 /install(TARGETS (.*) RUNTIME DESTINATION bin)/: 没有这样的文件或目录,则无法打开打印 $1。

这是什么原因?

options perl

2
推荐指数
1
解决办法
157
查看次数

这个 sed 命令中转义的换行符有什么问题?

我正在尝试text += num.toString(16);使用 sed 在每行之后添加该行。

我的做法是:Replace every new line with a new line, plus text += num.toString(16);。那是:

sed 's/\
/\
text \+= num\.toString\(16\);/g'
Run Code Online (Sandbox Code Playgroud)

但我无法让这个工作。我正在unterminated substitute pattern从 sed获取。

这里有什么问题?

我正在使用 BSD sed。

sed

1
推荐指数
1
解决办法
110
查看次数

标签 统计

awk ×1

console ×1

gawk ×1

gzip ×1

http ×1

options ×1

perl ×1

sed ×1

ssh ×1

variable ×1