2015-10-15 90 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