Chinaunix

标题: 初学2天问个低级问题(文本小处理) [打印本页]

作者: 穆赫兰道    时间: 2010-12-21 10:35
标题: 初学2天问个低级问题(文本小处理)
问题1:我直接输入 perl -p -i -w -e 's/hello/java/ig' helloworld  是可以替换成功的。(4个参数的顺序换了后提示/hello/java/文件打不开,是不是参数顺序不能换的?)
然后我直接在文本里vi编辑
#!/usr/bin/perl
open hup, "/usr/local/hup_perl/helloworld"||die"canot open!";
while(<hup>){
s/hello/java/ig;
print;#这里打印的结果是替换成功的
}
close hup;
#cat helloworld 文件没有替换成功,是不是还要什么操作漏了?
作者: jiannma    时间: 2010-12-21 10:55
这里的print; 是显示标准输出,即屏幕上

可以这样:

  1. open FILE, "txt" || die "Cannot open:$!";
  2. open FILE1, ">txt2";

  3. while (<FILE>){
  4.   s/hello/java/g;
  5.    print FILE1;
  6. }

  7. close FILE;
  8. close FILE1;


复制代码

作者: 穆赫兰道    时间: 2010-12-21 11:02
本帖最后由 穆赫兰道 于 2010-12-21 11:06 编辑

谢谢楼上帮助

1.我要直接写入file里,而不是先备份或创建个新文件

因为我这个文件更新很频繁,更新错了问题也不大,可以手工修改,但是我不需要备份
上面的代码还少了部分 应该先重命名file吧,然后创建的新文件必须是原file的文件名,我必须要用这个文件名。

即补充说明2点:
1.不产生新文件,不备份,就原文件修改,当然删除原文件,重新拷贝是可以的。
2.替换成功的文件的文件名必须是原文件名,系统只认那个文件名。
作者: zhlong8    时间: 2010-12-21 14:53
perl -i.bak -pe "s/hello/java/ig" helloworld

你是不是把 -e 换错地方了




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2