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。
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)