代码之家  ›  专栏  ›  技术社区  ›  peachykeen

如何从模式匹配中向后搜索以发现另一个模式?

  •  -1
  • peachykeen  · 技术社区  · 3 年前

    我有一个日志文件,我将其格式简化并压缩如下:

    ... junk ...
    ++ A
    ... junk ...
    ++ B
    ... junk ...
    -- X
    ... junk ...
    

    X 具有 B ? 作为概括,我想找出以 -- 然后倒转找到前面的第一行 ++ ? 例如,在上面的代码片段中,我希望能够提取 -- X ++ B 而忽略所有的垃圾行和 ++ A 以及任意数量的 ++ 一个和一个之间的垃圾 -- 下一个呢。

    1 回复  |  直到 3 年前
        1
  •  0
  •   karakfa    3 年前

    awk 为救援干杯!

    $ awk '/^++/{s=$0} s&&/^--/{print s; print; s=""}' file
    
    ++ B
    -- X
    

    注意。 已更新脚本以匹配多个对。