将多行日志文件转换为CSV(Converting multi-line log file to CSV)
我有一个如下所示的文件:
---------------------------------------- #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文件,如下所示:
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的文件。
I have file which looks like following:
---------------------------------------- #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 ----------------------------------------I need to convert it to CSV file which looks like this:
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,ErrorsNeed something being done as a command line (awk/sed)? since I have a series of files like this one which need to be converted to CSV.
最满意答案
awk -F: '/^#Timestamp/{line=$2","}/^#Title/{line=line""$2}/^#Category/{print line","$2;}' your_file测试:
> 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如果它适用于OP,则为较短的解决方案:
awk -F: '/^#/{line=line","$2}/^-/{print substr(line,3);line="";}' your_file awk -F: '/^#Timestamp/{line=$2","}/^#Title/{line=line""$2}/^#Category/{print line","$2;}' your_fileTested:
> 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, ErrorsA shorter solution if its ok for the OP:
awk -F: '/^#/{line=line","$2}/^-/{print substr(line,3);line="";}' your_file更多推荐
发布评论