gpt4 book ai didi

regex - 解析多行变长日志文件

转载 作者:行者123 更新时间:2023-12-04 11:45:29 24 4
gpt4 key购买 nike

我希望能够使用“grep”或“pcregrep -M”之类的解决方案来解析符合以下参数的日志文件:

  • 每个日志条目的长度可以是多行
  • 日志条目的第一行有我要搜索的关键字
  • 每个键出现在多于一行

  • 因此,在下面的示例中,我希望返回包含 KEY1 的每一行及其下方的所有支持行,直到出现下一条日志消息。

    日志文件:
    2010 年 2 月 1 日 - 10:39:01.755,调试 - KEY1:randomtext
    废话
    blah2 T
    废话3
    blah4 F
    废话5
    废话6
    废话7
    2010 年 2 月 1 日 - 10:39:01.757,调试 - KEY1:somethngelse
    2010 年 2 月 1 日 - 10:39:01.758,调试 - KEY2:randomtest
    这是一个测试
    2010 年 2 月 1 日 - 10:39:01.760,调试 - KEY1:更多日志在这里
    2010 年 2 月 1 日 - 10:39:01.762,调试 - KEY1:这里还有更多
    这是另一个多行日志条目
    继续前进
    但不像以前那么长
    2010 年 2 月 1 日 - 10:39:01.763,调试 - KEY2:测试
    测试测试测试
    key 2 的结尾
    2010 年 2 月 1 日 - 10:39:01.762,调试 - KEY1:但 key 1 仍在运行












    够了
    2010 年 2 月 1 日 - 10:39:01.762,调试 - KEY3:等等
    并在

    搜索 KEY1 的期望输出:
    2010 年 2 月 1 日 - 10:39:01.755,调试 - KEY1:randomtext
    废话
    blah2 T
    废话3
    blah4 F
    废话5
    废话6
    废话7
    2010 年 2 月 1 日 - 10:39:01.757,调试 - KEY1:somethngelse

    2010 年 2 月 1 日 - 10:39:01.760,调试 - KEY1:更多日志在这里
    2010 年 2 月 1 日 - 10:39:01.762,调试 - KEY1:这里还有更多
    这是另一个多行日志条目
    继续前进
    但不像以前那么长
    2010 年 2 月 1 日 - 10:39:01.762,调试 - KEY1:但 key 1 仍在运行












    够了

    我试图做这样的事情:
    pcregrep -M 'KEY1(.*\n)+' 日志文件
    但绝对不能正常工作。

    最佳答案

    如果你在 *nix 上,你可以使用 shell

    #!/bin/bash
    read -p "Enter key: " key
    awk -vkey="$key" '
    $0~/DEBUG/ && $0 !~key{f=0}
    $0~key{ f=1 }
    f{print} ' file

    输出
    $ cat file
    01 Feb 2010 - 10:39:01.755, DEBUG - KEY1:randomtext
    blah
    blah2 T
    blah3 T
    blah4 F
    blah5 F
    blah6
    blah7
    01 Feb 2010 - 10:39:01.757, DEBUG - KEY1:somethngelse
    01 Feb 2010 - 10:39:01.758, DEBUG - KEY2:randomtest
    this is a test
    01 Feb 2010 - 10:39:01.760, DEBUG - KEY1:more logs here
    01 Feb 2010 - 10:39:01.762, DEBUG - KEY1:eve more here
    this is another multiline log entry
    keeps on going
    but not as long as before
    01 Feb 2010 - 10:39:01.763, DEBUG - KEY2:testing
    test test test
    end of key2
    01 Feb 2010 - 10:39:01.762, DEBUG - KEY1:but key 1 is still going
    and going
    and going
    and going
    and going
    and going
    and going
    and going
    and going
    and going
    and going
    and going
    and going
    okay enough
    01 Feb 2010 - 10:39:01.762, DEBUG - KEY3:and so on
    and on

    $ ./shell.sh
    Enter key: KEY1
    01 Feb 2010 - 10:39:01.755, DEBUG - KEY1:randomtext
    blah
    blah2 T
    blah3 T
    blah4 F
    blah5 F
    blah6
    blah7
    01 Feb 2010 - 10:39:01.757, DEBUG - KEY1:somethngelse
    01 Feb 2010 - 10:39:01.760, DEBUG - KEY1:more logs here
    01 Feb 2010 - 10:39:01.762, DEBUG - KEY1:eve more here
    this is another multiline log entry
    keeps on going
    but not as long as before
    01 Feb 2010 - 10:39:01.762, DEBUG - KEY1:but key 1 is still going
    and going
    and going
    and going
    and going
    and going
    and going
    and going
    and going
    and going
    and going
    and going
    and going
    okay enough

    关于regex - 解析多行变长日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2182128/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com