将PuTTY Raw SSH输出转换为纯文本

时间:2016-03-15 11:19:37

标签: bash awk sed grep putty

我有一个来自PuTTY会话的240MB日志文件。这被错误地记录在" SSH数据包和原始数据中。格式而不是"所有会话输出"。如果我在文本编辑器中打开文件,那么我可以看到我需要的数据(纯文本)。

问题是从原始数据中提取它。

例如:

Incoming raw data at 2016-01-06 15:47:42
  00000000  e8 fd c2 d2 88 a9 39 b9 2a 77 2a 7b 4a 60 fc 21  ......9.*w*{J`.!
  00000010  1d f5 fc d4 b1 58 1f 4d 68 a4 ef 83 03 39 59 b7  .....X.Mh....9Y.
  00000020  41 be 36 7b b5 3c 10 fa 65 27 77 30 77 97 02 39  A.6{.<..e'w0w..9
  00000030  46 4c 28 da 5c c6 2c 1e ae 33 db e1 a8 09 ea 4a  FL(.\.,..3.....J
  00000040  06 94 c6 eb 38 8e d3 d3 33 13 78 08 7c 5f 41 56  ....8...3.x.|_AV
  00000050  f1 13 9e e1                                      ....
Incoming packet #0x31, type 94 / 0x5e (SSH2_MSG_CHANNEL_DATA)
  00000000  00 00 01 00 00 00 00 20 64 69 73 61 62 6c 69 6e  ....... disablin
  00000010  67 20 61 20 72 75 6e 6e 69 6e 67 20 77 61 74 63  g a running watc
  00000020  68 64 6f 67 2e 2e 0d 0a                          hdog....
Incoming raw data at 2016-01-06 15:47:42
  00000000  dc 96 f3 54 f8 a8 5c 83 80 7b a8 07 da 79 95 50  ...T..\..{...y.P
  00000010  3f 19 2f 0c f0 03 a1 01 a3 33 2f 97 75 9d 47 15  ?./......3/.u.G.
  00000020  b9 95 df c6 66 e0 50 32 88 1e db 5b 73 1b 7b ad  ....f.P2...[s.{.

我认为我需要做的只是阅读标有&#34; Incoming packet&#34;的文件部分。然后我可以读取ascii字符代码并转换为可读文本(这将恢复标签,换行和回车)。

我不熟悉awk或sed,但我知道有点grep。我怎样才能首先提取我需要从ASCII码翻译成文本的部分(可变大小)?

1 个答案:

答案 0 :(得分:0)

sed -n '/^Incoming packet/,/^Incoming raw data/{//!p}

这将在匹配Incoming packetIncoming raw之间打印行。进一步处理此输出以获得所需的输出。

仅从匹配行打印ASCII字符(打印最后17个字符):

sed -n '/Incoming packet/,/Incoming raw data/{//!{s/^.*\(.\{17\}\)/\1/;p}}'

参考:12