【问题标题】:Logfile processing: shorten long hex strings日志文件处理:缩短长十六进制字符串
【发布时间】:2018-10-12 19:39:35
【问题描述】:

我有一个日志文件,由于十六进制字符串(哈希、签名)过长而难以阅读,我正在寻找一种方法来用缩短的版本替换这些字符串。

例子:

$ cat sample_line
2018-04-17 13:08:03  IO Worker #2 TRACE engine  Handling a valid ConsensusMessage { vote_step: VoteStep { height: 1, view: 1, step: Precommit }, block_hash: Some(c70cd816cd441fda978f6302739892c0877349901c71f1bc9e637159b47989a7), signature: dfc14c535a9cddd861d640310a9d94252aa7d67c330a218312705d26c0d8b8d1670976566754033798d08b6c484470af18e985420f9048c782cd61ea212d416500 }

我尝试使用sed 并设法缩短签名:

$ cat sample_line | sed 's/signature: \(.\{6\}\)\w* \(.*\)/signature: \1…\2/'
2018-04-17 13:08:03  IO Worker #2 TRACE engine  Handling a valid ConsensusMessage { vote_step: VoteStep { height: 1, view: 1, step: Precommit }, block_hash: Some(c70cd816cd441fda978f6302739892c0877349901c71f1bc9e637159b47989a7), signature: dfc14c…}

然而,这不是一个非常令人满意的解决方案,因为它不是很通用。

我想要什么:
用最小值替换任何十六进制字符串的命令。说 32 个字符的长度,其前导 6 个字符加上一个省略号。对于给定的示例:

2018-04-17 13:08:03  IO Worker #2 TRACE engine  Handling a valid ConsensusMessage { vote_step: VoteStep { height: 1, view: 1, step: Precommit }, block_hash: Some(c70cd8…), signature: dfc14c… }

将任何字符串缩短一分钟就足够了。长度(因为该日志中没有其他长字符串)。

我怀疑其他工具 (awk) 更适合这项任务。

【问题讨论】:

  • edit 你的问题,以显示给定输入的预期输出。

标签: logging awk sed replace


【解决方案1】:

您可以使用sed。只需将第一个最初的 6 个十六进制字符放入捕获组,然后忽略其余的十六进制字符。

$ cat sample_line 
2018-04-17 13:08:03  IO Worker #2 TRACE engine  Handling a valid ConsensusMessage { vote_step: VoteStep { height: 1, view: 1, step: Precommit }, block_hash: Some(c70cd816cd441fda978f6302739892c0877349901c71f1bc9e637159b47989a7), signature: dfc14c535a9cddd861d640310a9d94252aa7d67c330a218312705d26c0d8b8d1670976566754033798d08b6c484470af18e985420f9048c782cd61ea212d416500 }
$ sed -r 's/([a-f0-9]{6})[a-f0-9]+/\1.../g' sample_line 
2018-04-17 13:08:03  IO Worker #2 TRACE engine  Handling a valid ConsensusMessage { vote_step: VoteStep { height: 1, view: 1, step: Precommit }, block_hash: Some(c70cd8...), signature: dfc14c... }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-21
    • 1970-01-01
    • 2018-07-27
    • 2016-05-22
    • 2017-08-20
    • 2018-07-24
    • 2020-03-22
    • 2012-06-16
    相关资源
    最近更新 更多