来自大日志文件的 bash/grep 确切的消息结构



我想就以下几点向你提出建议。我有一个包含多种类型消息的大日志文件,但我只需要 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 外壳中只 grep 那个结构。可以使用awk/grep/sed或任何其他建议。

谢谢大家。

由于我们不知道文件的其余部分,因此我们只能猜测。
gnu awk将数据旅馆划分为组,按年份分隔。

awk -v RS="^2015" 'NR>1 {print RS$0}' file

要仅获取一个部分,请执行以下操作:

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

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

最新更新