bash/shell - 从一个大日志文件中 grep 精确的消息结构

bash/shell - grep exact message structure from a big log file

我想就以下问题向您提出建议。 我有一个包含多种类型消息的大日志文件,但我只需要 grep 总是看起来像以下消息类型:

2015-03-05 15:00:05,294 abcdefgddd {
 msgType: abcsefg
gggggg {
  sendingTime: 1425567605270
  xxxx: 
  yyy {
    timestamp: 1425567605211
    zzz: 
    qqq: 
    vvv: 
  }
  yyy {
    timestamp: 1425567605211
    zzz: 
    qqq: 
    vvv: 
  }
  aaa {
    timestamp: 1425567605211
    zzz: 
    qqq: 
    vvv: 
  }
  aaa {
    timestamp: 1425567605211
    zzz: 
    qqq: 
    vvv: 
  }
}
}

这是消息结构。 我怎样才能只在 Linux shell 中 grep 那个结构。可以使用 awk/grep/sed 或任何其他建议。

谢谢大家。

由于我们不知道文件的其余部分,我们只能猜测。
这个gnu awk把数据栈分成组,按年份分开。

awk -v RS="^2015" 'NR>1 {print RS[=10=]}' file

只获取一个部分:

awk '/^2015-03-05 15:00:05/ {f=1} /{/ {c++} /}/ {c--} f && c; !c {f=0}' file

这将从日期 2015-03-05 15:00:05 开始打印,直到所有 {} 关闭。