请教:perl ,关于变量$^I将修改的内容写回文件的操作
时间:2011-02-21
来源:互联网
在入门教成里看到这样一个例子:
我们有相似格式的上百个文件。其中一个是fred03.dat,如下:
Promram name: granite
Author: Gilbert Bates
Company: RockSoft
Department: R&D
Phone: +1 503 555-0095
Date: Tues March 9, 2004
Version: 2.1
Size: 21k
Status: Final beta
我们希望修改这个文件,使之含有不同的信息。下面是我们希望修改后它所呈现的样式:
Program name: granite
Author: Randal L. Schwartz
Company: RockSoft
Department: R&D
Date: June 12, 2008 6:38 pm
Version: 2.1
Size: 21k
Status: Final beta
程序如下:
#! /usr/bin/perl –w
use strict;
chomp(my $date = ‘date’);
$^I =“.bak”;
while(<>){
s/^Author:.*/Author: Randal L. Scharwartz/;
s/^Phone:.*\n//;
s/^Date:.*/Date: $date/;
print;
}
如果$^I 中有字符串,这个字符串则会成为备份文件的扩展名。
我们假设此时尖括号(<>)打开的文件是fred03.dat。它像以前那样打开它,但进行了重名名,把它叫做fred03.dat.bak◆。这
很好,因为不在使用之前的名字。现在<>将这个新的文件作为默认的输出,因此任何内容将输出到那个文件中◆。while
循环会从旧的文件中读入一行,更新它,再把它输出到新文件中。
但是我试过了,增加了$^I =“.bak”;并没有使我要修改的内容写回原文件。
$perl –p –i.bak –w –e ‘s/Randall/Randal/g’fred*.dat,这个命令行操作可以将文件修改。
不知道谁有类似的经验?谢谢了。
我们有相似格式的上百个文件。其中一个是fred03.dat,如下:
Promram name: granite
Author: Gilbert Bates
Company: RockSoft
Department: R&D
Phone: +1 503 555-0095
Date: Tues March 9, 2004
Version: 2.1
Size: 21k
Status: Final beta
我们希望修改这个文件,使之含有不同的信息。下面是我们希望修改后它所呈现的样式:
Program name: granite
Author: Randal L. Schwartz
Company: RockSoft
Department: R&D
Date: June 12, 2008 6:38 pm
Version: 2.1
Size: 21k
Status: Final beta
程序如下:
#! /usr/bin/perl –w
use strict;
chomp(my $date = ‘date’);
$^I =“.bak”;
while(<>){
s/^Author:.*/Author: Randal L. Scharwartz/;
s/^Phone:.*\n//;
s/^Date:.*/Date: $date/;
print;
}
如果$^I 中有字符串,这个字符串则会成为备份文件的扩展名。
我们假设此时尖括号(<>)打开的文件是fred03.dat。它像以前那样打开它,但进行了重名名,把它叫做fred03.dat.bak◆。这
很好,因为不在使用之前的名字。现在<>将这个新的文件作为默认的输出,因此任何内容将输出到那个文件中◆。while
循环会从旧的文件中读入一行,更新它,再把它输出到新文件中。
但是我试过了,增加了$^I =“.bak”;并没有使我要修改的内容写回原文件。
$perl –p –i.bak –w –e ‘s/Randall/Randal/g’fred*.dat,这个命令行操作可以将文件修改。
不知道谁有类似的经验?谢谢了。
作者: lnjtyz 发布时间: 2011-02-21
作者: ace_fei 发布时间: 2011-02-22
本帖最后由 Monox 于 2011-02-22 17:07 编辑
回复 lnjtyz
在这里试过,一切OK,测试环境,Linux, perl 5.12.3。
当然了,上面的程序里的
复制代码
应该是
复制代码
回复 lnjtyz
在这里试过,一切OK,测试环境,Linux, perl 5.12.3。
当然了,上面的程序里的
- 'date'
- `date`
作者: Monox 发布时间: 2011-02-22
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28