【问题标题】:Collect all strings between pattern1 and pattern2 but only print the string in between which matches pattern3收集 pattern1 和 pattern2 之间的所有字符串,但只打印其中匹配 pattern3 的字符串
【发布时间】:2018-08-11 10:49:42
【问题描述】:

我正在尝试处理一个打印测试日志日志的大型测试日志文件。测试块以"start running"(以下pattern1)开头,以"test end"(以下pattern2)结尾;在这两个字符串之间有一个 "Error Message" (pattern3) 显示详细的错误信息。

这是我想做的和我做过的:

  1. 搜索日志文件 (test.log) 并使用 sed 打印出“完整”的测试日志:

     sed -n '/pattern1/,/pattern2/p' test.log
    

    这将收集所有测试的完整日志

  2. 我想在步骤 1 的基础上更进一步,只打印出包含“错误消息”(pattern3) 的行以及包含 pattern1 pattern2 的行。如何在单行 sed 命令中完成它?

3.我也可以使用 Python re 模块来解决这个问题吗?

【问题讨论】:

  • 请提供一些真实的输入字符串来玩。

标签: python regex sed


【解决方案1】:

问题 2 的答案:如何打印出包含 pattern3 的字符串: "sed -n '/pattern1/,/pattern2/{/pattern3/p}' test.log"

但是这个命令不能打印出 pattern1 和 pattern2 ,还在想办法。

(嗯,不知道为什么以前的答案/cmets 都被删除了,这是我发布的第一个 StackOverflow 问题欢迎任何建议:))

【讨论】:

    猜你喜欢
    • 2020-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-21
    • 1970-01-01
    • 2019-10-17
    • 2012-06-13
    • 1970-01-01
    相关资源
    最近更新 更多