2015-10-15 101 views
2

我有Linux服务器上,它看起来像这样的一些应用程序的日志数据,bash的日志文件转换为CSV

 2015-10-09 08:16:40,692 28456 INFO Demodb openerp.addons.service_logger.service_logger: 1 res.partner.fields_view_get ([], {'view_id': 127, 'toolbar': False, 'context': {' 
    lang': 'en_US', 'tz': 'Europe/Brussels', 'uid': 1, 'active_model': 'res.partner', 'params': {'action': 60}, 'search_default_customer': 1}, 'view_type': 'search'}) 
    2015-10-09 08:16:40,701 28456 INFO Demodb openerp.addons.service_logger.service_logger: 1 res.partner.fields_view_get ([], {'view_id': 128, 'toolbar': True, 'context': {'l 
    ang': 'en_US', 'tz': 'Europe/Brussels', 'uid': 1, 'active_model': 'res.partner', 'params': {'action': 60}, 'search_default_customer': 1}, 'view_type': 'kanban'}) 

我要输出到这个csv格式,(基本上是从“([]”吧可以是一个批次)

 2015-10-09,08:16:40,701,28456,INFO,Demodb openerp.addons.service_logger.service_logger:,1,res.partner.fields_view_get,([],{'view_id': 128,'toolbar': True,'context':,{'l 
    ang':'en_US','tz': 'Europe/Brussels', 'uid': 1, 'active_model': 'res.partner', 'params': {'action': 60}, 'search_default_customer': 1}, 'view_type': 'kanban'}) 

任何投入将是有益的,

+0

是否序列 “([]” 的东西固定在日志的每一行? –

+2

你想要做什么并不是很清楚。在你的例子中,你用逗号代替了输入行中的_some_(尽管不是全部)空格。背后的规则是什么?你想要哪些列?你想用输入行中的逗号做什么? –

+0

@ Avihoo Mamka:是的序列是相同的 – Maddy

回答

0

这将替换用逗号所有空格,直到([]第一次出现:

sed -e 'h;s/.*(\[\]//;x;s/\s\+(\[\].*//g;s/\s\+/,/g;G;s/\n/,([]/' 

说明:

h     # copy line to hold 
s/.*(\[\]//  # remove everything before ([] 
x     # swap unchanged line back from hold, put part after ([] to hold 
s/\s\+(\[\].*//g # remove everything after ([] 
s/\s\+/,/g  # do work, that is change spaces to commas 
G     # glue the two parts together, with a newline inbetween 
s/\n/,([]/  # put the ([]-marker back between the two parts 
+0

就是这样)谢谢 – Maddy