我有一个类似如下的文件:
----------------------------------------
#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。
发布于 2013-04-12 15:11:20
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一个较短的解决方案,如果对于操作是可以的:
awk -F: '/^#/{line=line","$2}/^-/{print substr(line,3);line="";}' your_file发布于 2013-04-12 02:44:48
#!/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发布于 2013-04-12 08:58:37
这可能适用于您(GNU sed):
sed '/^#Timestamp:/{N;N;y/\n/,/;s/#[^ ]* //gp};d' filehttps://stackoverflow.com/questions/15956337
复制相似问题