我需要分析一个包含以下内容的日志文件:
2018-07-11T17:25:14.07565; [ZMQ] info; Sending message to; ROne (Addr {_unAddr = "tcp://127.0.0.1:10002"}); ## MSG ##; "\NUL\NUL\NUL\NUL\NUL\NUL\NUL\t127.0.0.1\NUL\NUL\NUL\NUL\NUL\NUL'\DC3\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NAKtcp://127.0.0.1:10003\NUL\NUL\NUL\NUL\NUL\NUL\NUL@h_\214\169\213n\RS\212o\tu|\191\"\207GvP\224\167\222V*n6\140\236q\von0\148\240\nV\157\206\225\251A\240\DC4\US\228\140\253\255L\242\163\&0\134\\\241'\r\229W{WD\218\b\143\213go\194\161o\STXM\154X\195R\128\134eN=\144\153\129\242\133f\149\\:A\213\158C\DLE\b\NUL\NUL\NUL\NUL\NUL\NUL\NULG\SOH\NUL\NUL\NUL\NUL\NUL\NUL\NUL\t127.0.0.1\NUL\NUL\NUL\NUL\NUL\NUL'\DLE\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NAKtcp://127.0.0.1:10000\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL;\154\202\NUL"
带有\NUL
的部分是使用
Prelude.putStr (show msg)
其中msg
是Data.ByteString
实例创建的Data.Serialize
我需要
String
行ByteString
部分ByteString
Data.Serialize.decode
我不清楚如何执行第3步:将String
的{{1}}表示形式转换为真实的ByteString
。
我最初的尝试是将#2分配给ByteString
。但是,当尝试Data.ByteString.Char8.pack
decode
我得到:
decode (BSC8.pack l) :: Either String SignedRPC
答案 0 :(得分:1)
也许:
Data.ByteString Text.Read> readMaybe "\"\\NUL\"" :: Maybe ByteString
Just "\NUL"