请教一个用正则提取参数后,在另外一个文件进行替换的问题.
时间:2010-10-20
来源:互联网
本帖最后由 xixizhihua 于 2010-10-20 10:53 编辑
大家好,我在写perl的时候,遇到这样一个问题.请大家帮忙指点一下.
总体上说,就是要把一张表的内容,分别替换到其它各个文件中,在把替换过的文件存起来。
举个例子:
我有一个文件:datafile.t
内容是一个类似表格的文件:
time work complete number name
9:00 write 1 6 zgq
10:00 copy 0 30 yzl
8:00 email 1 8 wxy
12:00 meeting 0 12 wyz
……
另外一个文件为文本范例:example.v
大部分文字都是固定的
里面有一部分内容为
please call zgq
at the time 9:00
the work is write
he has completed the work
(注:如果complete=0就写 he is doing the work)
the total number is 6
我要做的:是把表格各行内容替换进去。然后用最后的task_name作为文件名存起来。
比如:把第一行内容读出,替换掉example的那部分内容,保存为task_zgq.v
然后,把第二行内容读出,替换掉example的那部分内容,保存为task_yzl.v
该文件替换后的那部分内容为:
please call yzl
at the time 10:00
the work is write
he is doing the work
the total number is 30
然后,把第三行内容读出,替换掉example的那部分内容,保存为task_wxy.v
该文件替换后的那部分内容为:
please call wxy
at the time 8:00
the work is email
he has completed the work
the total number is 8
以此类推……
最后生成一堆格式和example一样,内容按表替换,文件名是例如task_wxy.v task_yzl.v ……的文件集。
目前:
我用s:\s*(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s:get$1and$2and$3and$4and$5:
进行试验。
可以把参数提出来,经过检查,5个参数,都能提对。
但是,怎么把它们替换到别的文件,以及替换后,怎么按规定的文件名保存,一直都弄不成功。
希望朋友们能帮我指点下。非常非常感谢。
大家好,我在写perl的时候,遇到这样一个问题.请大家帮忙指点一下.
总体上说,就是要把一张表的内容,分别替换到其它各个文件中,在把替换过的文件存起来。
举个例子:
我有一个文件:datafile.t
内容是一个类似表格的文件:
time work complete number name
9:00 write 1 6 zgq
10:00 copy 0 30 yzl
8:00 email 1 8 wxy
12:00 meeting 0 12 wyz
……
另外一个文件为文本范例:example.v
大部分文字都是固定的
里面有一部分内容为
please call zgq
at the time 9:00
the work is write
he has completed the work
(注:如果complete=0就写 he is doing the work)
the total number is 6
我要做的:是把表格各行内容替换进去。然后用最后的task_name作为文件名存起来。
比如:把第一行内容读出,替换掉example的那部分内容,保存为task_zgq.v
然后,把第二行内容读出,替换掉example的那部分内容,保存为task_yzl.v
该文件替换后的那部分内容为:
please call yzl
at the time 10:00
the work is write
he is doing the work
the total number is 30
然后,把第三行内容读出,替换掉example的那部分内容,保存为task_wxy.v
该文件替换后的那部分内容为:
please call wxy
at the time 8:00
the work is email
he has completed the work
the total number is 8
以此类推……
最后生成一堆格式和example一样,内容按表替换,文件名是例如task_wxy.v task_yzl.v ……的文件集。
目前:
我用s:\s*(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s:get$1and$2and$3and$4and$5:
进行试验。
可以把参数提出来,经过检查,5个参数,都能提对。
但是,怎么把它们替换到别的文件,以及替换后,怎么按规定的文件名保存,一直都弄不成功。
希望朋友们能帮我指点下。非常非常感谢。
作者: xixizhihua 发布时间: 2010-10-20
回复 xixizhihua
不要陷入文件替换了,用文件新建。
复制代码
然后把@text的内容写入文件task_$5.v
不要陷入文件替换了,用文件新建。
- my @text;
- push @text,"please call $5\n";
- push @text,"at the time $1\n";
- push @text,"the work is $2\n";
- if($3 == 1){
- push @text,"he has completed the work\n";
- }else{
- push @text,"he is doing the work\n";
- }
- push @text,"the total number is $4\n";
作者: 珞水的大叔 发布时间: 2010-10-20
谢谢大叔,我试了一下,使用数组存进去,再放的方法确实可以把我要换的那块,生成新文件。
但是,有个问题。
就是我的那个example.v
实际上是一个非常复杂的脚本文本。
而我要替换的参数,也要在多个地方进行替换使用。
如果全部生成的话,
是不是,我需要先把不要替换的内容全部拷贝下来,push到数组里。
然后和生成的内容一起存呢?
另外生成的脚本文件,有格式要求,我直接写的话,一是容易漏,第二个格式我不大会调。
能不能再请教下大叔,针对比较复的文件替换,是不是有更好的方法呢?
但是,有个问题。
就是我的那个example.v
实际上是一个非常复杂的脚本文本。
而我要替换的参数,也要在多个地方进行替换使用。
如果全部生成的话,
是不是,我需要先把不要替换的内容全部拷贝下来,push到数组里。
然后和生成的内容一起存呢?
另外生成的脚本文件,有格式要求,我直接写的话,一是容易漏,第二个格式我不大会调。
能不能再请教下大叔,针对比较复的文件替换,是不是有更好的方法呢?
作者: xixizhihua 发布时间: 2010-10-20
本帖最后由 珞水的大叔 于 2010-10-20 12:51 编辑
回复 xixizhihua
可以这样,也可以处理一句就往文件里写一句
那就这样,还是用你举的例子来说(即需替换五个地方),思路大致是这样的:
1.先把datafile.t中的信息提取出来,存放入数组
2.读入文本范例example.v,对每行都进行五个替换的处理,把处理结果存入结果数组
至于如何替换,需要看你的具体替换要求,是替换某个位置的字符串?还是把某个特定的字符串替换掉?都要具体分析
3.把结果数组写入新文件
回复 xixizhihua
QUOTE:
如果全部生成的话,
是不是,我需要先把不要替换的内容全部拷贝下来,push到数组里。
然后和生成的内容一起存呢?
是不是,我需要先把不要替换的内容全部拷贝下来,push到数组里。
然后和生成的内容一起存呢?
可以这样,也可以处理一句就往文件里写一句
QUOTE:
另外生成的脚本文件,有格式要求,我直接写的话,一是容易漏,第二个格式我不大会调。
能不能再请教下大叔,针对比较复的文件替换,是不是有更好的方法呢?
能不能再请教下大叔,针对比较复的文件替换,是不是有更好的方法呢?
那就这样,还是用你举的例子来说(即需替换五个地方),思路大致是这样的:
1.先把datafile.t中的信息提取出来,存放入数组
2.读入文本范例example.v,对每行都进行五个替换的处理,把处理结果存入结果数组
至于如何替换,需要看你的具体替换要求,是替换某个位置的字符串?还是把某个特定的字符串替换掉?都要具体分析
3.把结果数组写入新文件
作者: 珞水的大叔 发布时间: 2010-10-20
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28