首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将多行日志文件转换为CSV

将多行日志文件转换为CSV
EN

Stack Overflow用户
提问于 2013-04-12 02:39:08
回答 7查看 4.3K关注 0票数 1

我有一个类似如下的文件:

代码语言:javascript
运行
复制
----------------------------------------
#Timestamp: 4/11/2013 12:00:48 AM
#Title: MDS error
#Category: Errors

----------------------------------------
#Timestamp: 4/11/2013 12:03:27 AM
#Title: MDS error
#Category: Errors

----------------------------------------
#Timestamp: 4/11/2013 12:05:39 AM
#Title: MDS error
#Category: Errors

----------------------------------------

我需要将其转换为CSV文件,如下所示:

代码语言:javascript
运行
复制
4/11/2013 12:00:48 AM,MDS error,Errors
4/11/2013 12:03:27 AM,MDS error,Errors
4/11/2013 12:05:39 AM,MDS error,Errors

需要作为命令行(awk/sed)执行某些操作吗?因为我有一系列像这样的文件需要转换成CSV。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2013-04-12 15:11:20

代码语言:javascript
运行
复制
awk -F: '/^#Timestamp/{line=$2","}/^#Title/{line=line""$2}/^#Category/{print line","$2;}' your_file

测试结果:

代码语言:javascript
运行
复制
> cat temp
----------------------------------------
#Timestamp: 4/11/2013 12:00:48 AM
#Title: MDS error
#Category: Errors

----------------------------------------
#Timestamp: 4/11/2013 12:03:27 AM
#Title: MDS error
#Category: Errors

----------------------------------------
#Timestamp: 4/11/2013 12:05:39 AM
#Title: MDS error
#Category: Errors

----------------------------------------
> awk -F: '/^#Timestamp/{line=$2","}/^#Title/{line=line""$2}/^#Category/{print line","$2;}' temp
 4/11/2013 12, MDS error, Errors
 4/11/2013 12, MDS error, Errors
 4/11/2013 12, MDS error, Errors

一个较短的解决方案,如果对于操作是可以的:

代码语言:javascript
运行
复制
awk -F: '/^#/{line=line","$2}/^-/{print substr(line,3);line="";}' your_file
票数 5
EN

Stack Overflow用户

发布于 2013-04-12 02:44:48

代码语言:javascript
运行
复制
#!/bin/bash

while true; do
    read             || break
    read _ timestamp || break
    read _ title     || break
    read _ category  || break
    read             || break

    printf '%s,%s,%s\n' "$timestamp" "$title" "$category"
done < logfile.txt
票数 1
EN

Stack Overflow用户

发布于 2013-04-12 08:58:37

这可能适用于您(GNU sed):

代码语言:javascript
运行
复制
sed '/^#Timestamp:/{N;N;y/\n/,/;s/#[^ ]* //gp};d' file
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15956337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档