grep包括换行

时间:2019-05-15 10:07:00

标签: regex linux grep

我有一个日志文件,我想使用模式获取内容

日志文件将如下所示

2019-05-15 16:40 +07:00: data { data:
   [ { audio_incremental_num: 1,
       session_id: 'openrJEe7A_1557912549',
       stream_time: 88,
       duration: 291,
       audio_id: '749f7c75-9fe1-4dbc-b5d8-770aadfe94bc'
       version: '1.2' },
     { audio_incremental_num: 1,
       session_id: 'openrJEe7A_1557912549',
       stream_time: 88,
       duration: 291,
       audio_id: '749f7c75-9fe1-4dbc-b5d8-770aadfe94bc'
       version: '1.2' }] }
2019-05-15 16:50 +07:00: data { data:
   [ { audio_incremental_num: 1,
       session_id: 'openrJEe7A_1557912549',
       stream_time: 88,
       duration: 291,
       audio_id: '749f7c75-9fe1-4dbc-b5d8-770aadfe94bc'
       version: '1.2' },
     { audio_incremental_num: 1,
       session_id: 'openrJEe7A_1557912549',
       stream_time: 88,
       duration: 291,
       audio_id: '749f7c75-9fe1-4dbc-b5d8-770aadfe94bc'
       version: '1.2' }] }

我尝试使用这些,但是没有运气

grep -zo '2019-05-[0-9][1-9] [0-9][0-9]:[0-9][0-9] +07:00: data { data:[[:space:]]'

grep -P '2019-05-[0-9]{2} [0-9]{2}:[0-9]{2} \+07:00: data { data:(\s.*)*.*'

注意:我的日志文件实际上是与其他日志字符串内容混合在一起的,因此它不是100%JSON日志

1 个答案:

答案 0 :(得分:0)

您的日志文件看起来像json格式,您可以在bash中使用jq进行解析,这非常有用,请检查此链接Working with JSON in bash using jq