【发布时间】:2019-10-08 20:07:11
【问题描述】:
我有一个包含多个测试块的文件。对于每个测试块,我希望能够提取方括号中的内容、包含单词“area”的第一个实例的行以及方括号右侧的内容。一切都将是一个字符串。基本上我想要做的是将每个字符串存储到哈希中的一个变量中,这样我就可以将它打印到一个 3 列的 csv 文件中。
这是文件的样例:
学生-[K-6] 数学优异
/home/area/kinder/mathadvance.txt, 12
K-12 年级的学生在数学方面表现出色。
被安排到特殊的课后计划中。
见 /home/area/overall/performance.txt, 200
学生-[初级] 表现不佳
综合成绩较差的学生。
提供的暑期课程服务如
“/home/area/services/summer.txt”,212
学生-[K-6] 体育锻炼时间段
/home/area/pe/schedule.txt, 303
根据学生的年级分配体育课时隙。参考
/home/area/overall/classtimes.txt, 90
我想要一个看起来像这样的最终 csv 文件:
等级、主题、路径
K-6, 数学优异, /home/area/kinder/mathadvance.txt, 12
K-6,体育锻炼时间段,/home/area/pe/schedule.txt,303
初级,表现不佳,“/home/area/services/summer.txt”,212
因为它是一个 csv 文件,所以我知道它在导出到 excel 时也会在行号处分开,但我很好。
我首先将成绩类型放入一个数组中,因为我希望能够为不同的年级添加更多的字符串。
到目前为止,我的程序如下所示:
#!/usr/bin/perl
use strict;
use warnings;
my @grades = ("K-6", "Junior", "Community-College", "PreK");
我在想我需要执行某种系统 sed 命令来获取括号中的内容并将其存储到变量中。然后我将抓取该行括号右侧的所有内容并将其存储到一个变量中。然后我将 grep 查找包含“区域”的行以获取路径,并将其作为字符串存储到变量中,将它们放入哈希中,然后打印到 csv 中。我不确定我是否以正确的方式考虑这个问题。另外,我不知道如何为文件中的每个文本块执行此操作。我需要一个块一个,因为每个块都有自己对应的等级、主题和路径。
【问题讨论】:
-
您想使用Perl Regexes。你的问题很好;抱歉,我现在没有时间为您编写一个可行的示例。我引用的链接应该为您指明正确的方向。
标签: perl