声明:我是perl脚本编程的新手,这部分是学习练习(但仍然是工作项目)。另外,我对shell脚本有更强的把握,所以我的示例可能会以这种思维模式进行格式化(但我想用perl创建它们)。对不起提前为我的冗长,我要确保我在获得跨越使用Perl解析文件并将特定值插入到数据库中
我有一个文本文件(参考指南)我的观点至少稍微清楚,是一个Word文档转换为文本,然后从Windows交换在Notepad ++中转换为UNIX格式。该文件是统一的,文件的每个部分都有相同的字段/格式/表格。
我打算做的基本方法是抓住每个部分,用唯一的批处理作业名称作为键,并将所有值放入数据库(或者可能只是一个excel文件),以便可以搜索所有字段/为每个工作编辑比在word文件中更容易,并且稍后可能创建一个web界面。
所以我想要做的是做这样的事情抓住每个部分:
sed -n '/job_name_1_regex/,/job_name_2_regex/' file.txt
- 怎么会变成这样一个Perl脚本中被格式化?
(抢在总的部分,然后从那里再打破它)
要阅读脚本文件我有open FORMAT_FILE, 'test_format.txt';
然后用foreach $line (<FORMAT_FILE>)
解析由行的文件行。 - 有没有更好的方法?
我的下一个问题是,由于我从表一个Word文档,它看起来转化,如:
Table Heading 1 Table Heading 2 Heading 1/Value 1 Heading 2/Value 1 Heading 1/Value 2 Heading 2/Value 2
但文本文件,它看起来像:
Table Heading 1 Table Heading 2
Heading 1/Value 1
Heading 1/Value 2
Heading 2/Value 1
Heading 2/Value 2
所以我想将“标题1”和“标题2”作为列名称,然后将相应的值放在那里。我只是不确定如何从文本文件中获取与标题相关的值。标题1的值始终是标题1加2的行号(标题1,标题2,标题1的值)。我知道这可以很容易地在awk/sed中完成,只是不知道如何解决里面的 perl脚本。
---编辑---
为此,我想在做一个数组类似的:
my @heading1 = ($value1, $value2, etc.)
my @heading2 = ($value1, $value2, etc.)
我只需要能够正确的价值观和标题关联在一起。因此,标题1 = 标题2后面的行(其值开始)。 就像说(壳):
x=$(cat file.txt | grep -n "Heading 1" | cut -d":" -f1)
- 得到行“标题1”是在文件中
((x = x+2))
- 增加2到线(其中的值将开始)
sed -n "$x,$last_line_of_values p" file.txt
- 从文件打印值。从那里开始,到最后一个行TXT(我会明白这一点,在一些点在此之前)
这是超级黑客的时刻在一起,试图阐述什么,我想做的事情。 ..let我知道,如果它清除它一点点...
---/---编辑
后,我有所有的正确的价值观和这样的,它连接到一个数据库可能是一个问题,好吧,我还没有开始考虑perl与数据库交互的方式。
对不起,如果这是一个有点scatterbrained ...它仍然没有完全形成在我的脑海。
感谢WAZ,我更新了一篇关于试图更好地解释它的表。 – Sean 2010-04-22 17:40:10