我是 Perl 的新手,真的可以使用一些帮助来制作文件解析器。该文件是这样构建的(X 是一个在文件之间变化的数字,并提供包含列标题的以下行数):
X,1,0,0,2,0,0,2,0,1,2,0,2,2,0,3,2,0,4,2,1,0,2,2,0,2,3,0,2,4,0,2,4,1,2,4,2,2,4,3,2,5,0,2,5,1,2,5,2,2,5,3,3,1,0,3
# Col_heading1
# Col_heading2
# Col_heading3 //Continues X rows
# Col_headingX
# 2013 138 22:42:21 - Random text
# 2013 138 22:42:22 : Random text
# 2013 138 22:42:23 : Random text
2013 138 22:42:26, 10, 10, 10, 20, //continues X values
2013 138 22:42:27, 10, 10, 10, 20,
2013 138 22:42:28, 10, 10, 10, 20,
# 2013 138 22:42:31 - Random text
# 2013 138 22:42:32 : Random text
# 2013 138 22:42:33 - Event $eventname starting ($eventid) //$eventname and $eventid changes for each file
2013 138 22:42:35, 10, 10, 10, 20,
2013 138 22:42:36, 10, 10, 10, 20,
2013 138 22:42:37, 10, 10, 10, 20,
2013 138 22:42:38, 10, 10, 10, 20,
2013 138 22:42:39, 10, 10, 10, 20,
# 2013 138 22:42:40 : Random text
2013 138 22:42:41, 10, 10, 10, 20,
2013 138 22:42:42, 10, 10, 10, 20,
# 2013 138 22:42:45 - Event $eventname ended ($eventid) //$eventname and $eventid changes for each file
2013 138 22:42:46, 10, 10, 10, 20,
2013 138 22:42:47, 10, 10, 10, 20,
# 2013 138 22:42:48 : Random text
解析器需要将 Col_headings 转置为一行中的制表符分隔值,并列出所有介于# 2013 138 22:42:33 - Event $eventname starting ($eventid)
和之间# 2013 138 22:42:45 - Event $eventname ended ($eventid)
且不以 # 开头的行。这些值也必须从逗号分隔更改为制表符分隔。
输出文件应如下所示:
Filename:/home/..../filename What:$eventname Where:SYSTEM ID:$eventid
Time Col_heading1 Col_heading2 Col_heading3 Col_headingX
2013 138 22:42:35 10 10 10 20
2013 138 22:42:36 10 10 10 20
2013 138 22:42:37 10 10 10 20
2013 138 22:42:38 10 10 10 20
2013 138 22:42:39 10 10 10 20
2013 138 22:42:41 10 10 10 20
2013 138 22:42:42 10 10 10 20
对此的任何帮助将不胜感激!