将多行日志文件转换为 CSV

Doi*_*nal 1 linux csv shell awk sed

我有如下文件:

----------------------------------------
#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

----------------------------------------
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

需要在命令行 (awk/sed) 中做些什么?因为我有一系列像这样的文件需要转换为 CSV。

Vij*_*jay 5

awk -F: '/^#Timestamp/{line=$2","}/^#Title/{line=line""$2}/^#Category/{print line","$2;}' your_file
Run Code Online (Sandbox Code Playgroud)

测试:

> 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
Run Code Online (Sandbox Code Playgroud)

一个较短的解决方案,如果它对 OP 没问题:

awk -F: '/^#/{line=line","$2}/^-/{print substr(line,3);line="";}' your_file
Run Code Online (Sandbox Code Playgroud)