使用 sed 将 tomcat 日志转换为 CSV
Converting tomcat logs to CSV using sed
我在 Linux 服务器上有一些应用程序日志数据,如下所示:
Jan 11 14:24:42 AttackSimulator.abcd [1587566256,49294,"ryan.wright@abcd.com",3237159933,1,0,0,3,"2314","https",443,2899903330,"https://googleads.g.doubleclick.net/pagead/ads",0,"","","","","1 - Default Policy","","googleads.g.doubleclick.net","GET",4,0,5]
Jan 11 14:24:42 AttackSimulator.abcd [1587566256,49294,"melisa.zeunert@abcd.com",3237159933,1,0,0,3,"2339,37788","http",80,387803624,"http://ping.citrix.com",0,"","","","","3 - Extended Policy High","","ping.citrix.com","HEAD",3,0,4]
我想将其输出到 CSV 文件中。 [ ] 之间的所有内容都应该是 CSV 的一部分,列名包括 DateandTime、AccountID、UserID、ClientIP 等。看起来像这样:
DateandTime, AccountID, UserID, ClientIP
1587566256,49294,"ryan.wright@abcd.com",3237159933
1587566256,49294,"melisa.zeunert@abcd.com",3237159933
(这只是一个只有 4 列的示例。实际输出将有 25)
任何意见都会有所帮助
使用sed
$ sed 's/.*\[\(.*\)]//;1iDateandTime, AccountID, UserID, ClientIP ' file
DateandTime, AccountID, UserID, ClientIP
1587566256,49294,"ryan.wright@scnx.com",3237159933,1,0,0,3,"2314","https",443,2899903330,"https://googleads.g.doubleclick.net/pagead/ads",0,"","","","","1 - Default Policy","","googleads.g.doubleclick.net","GET",4,0,5
1587566256,49294,"melisa.zeunert@scnx.com",3237159933,1,0,0,3,"2339,37788","http",80,387803624,"http://ping.citrix.com",0,"","","","","3 - Extended Policy High","","ping.citrix.com","HEAD",3,0,4
.*\[
- 排除直到最后一个 [
方括号的所有内容。
\(.*\)]
- 包括括号内的所有内容,直到最后一个 ]
方括号
</code> - Return 向后引用括号内存储的内容</p>
<p><code>1i
- 在第 1 行插入
我在 Linux 服务器上有一些应用程序日志数据,如下所示:
Jan 11 14:24:42 AttackSimulator.abcd [1587566256,49294,"ryan.wright@abcd.com",3237159933,1,0,0,3,"2314","https",443,2899903330,"https://googleads.g.doubleclick.net/pagead/ads",0,"","","","","1 - Default Policy","","googleads.g.doubleclick.net","GET",4,0,5]
Jan 11 14:24:42 AttackSimulator.abcd [1587566256,49294,"melisa.zeunert@abcd.com",3237159933,1,0,0,3,"2339,37788","http",80,387803624,"http://ping.citrix.com",0,"","","","","3 - Extended Policy High","","ping.citrix.com","HEAD",3,0,4]
我想将其输出到 CSV 文件中。 [ ] 之间的所有内容都应该是 CSV 的一部分,列名包括 DateandTime、AccountID、UserID、ClientIP 等。看起来像这样:
DateandTime, AccountID, UserID, ClientIP
1587566256,49294,"ryan.wright@abcd.com",3237159933
1587566256,49294,"melisa.zeunert@abcd.com",3237159933
(这只是一个只有 4 列的示例。实际输出将有 25)
任何意见都会有所帮助
使用sed
$ sed 's/.*\[\(.*\)]//;1iDateandTime, AccountID, UserID, ClientIP ' file
DateandTime, AccountID, UserID, ClientIP
1587566256,49294,"ryan.wright@scnx.com",3237159933,1,0,0,3,"2314","https",443,2899903330,"https://googleads.g.doubleclick.net/pagead/ads",0,"","","","","1 - Default Policy","","googleads.g.doubleclick.net","GET",4,0,5
1587566256,49294,"melisa.zeunert@scnx.com",3237159933,1,0,0,3,"2339,37788","http",80,387803624,"http://ping.citrix.com",0,"","","","","3 - Extended Policy High","","ping.citrix.com","HEAD",3,0,4
.*\[
- 排除直到最后一个 [
方括号的所有内容。
\(.*\)]
- 包括括号内的所有内容,直到最后一个 ]
方括号
</code> - Return 向后引用括号内存储的内容</p>
<p><code>1i
- 在第 1 行插入