Chinaunix

标题: perl 如何直接修改文件 [打印本页]

作者: baoyu05    时间: 2010-10-11 15:33
标题: perl 如何直接修改文件
[root@as5 ~]# cat n
#!/usr/bin/perl -w
$^I="";
open NN,">>","nn";
while(<NN>){
s/name/QQ/;
print
}
[root@as5 ~]# cat nn
My name is baoyu
[root@as5 ~]# ./n
[root@as5 ~]# cat nn
My name is baoyu
[root@as5 ~]#
作者: blackold    时间: 2010-10-11 15:34
回复 1# baoyu05


    搞到shell来了?

   -i
作者: baoyu05    时间: 2010-10-11 15:36
本帖最后由 baoyu05 于 2010-10-11 15:38 编辑

回复 2# blackold


    都是脚本,不分家。呵呵
-i 放到哪里
作者: nuclearxin    时间: 2010-10-11 17:18
逻辑有问题
open NN,">>","nn";
这行

perl -i -pe 's/name/QQ/' nn
作者: nuclearxin    时间: 2010-10-11 17:22
你想用读写的方式打开?

那麽 替换的字符串必须于原来的相等;
用了 ^I 就是向新的备份文件写入
作者: baoyu05    时间: 2010-10-11 17:38
回复 5# nuclearxin


    那要怎么写,什么方式打开无所谓。只有能直接修改即可。
作者: baoyu05    时间: 2010-10-11 17:38
回复 4# nuclearxin


    写在perl文件里怎么写
作者: bbgg1983    时间: 2010-10-11 18:27
perl不懂,只能观望了
作者: beyondfly    时间: 2010-10-11 20:23
何不用sed
作者: baoyu05    时间: 2010-10-11 22:18
回复 9# beyondfly


    修改文件只是perl脚本中的一部分,所以我想用perl
作者: nuclearxin    时间: 2010-10-11 22:37
同时打开两个文件
一个读取 一个写
作者: baoyu05    时间: 2010-10-11 22:51
回复 11# nuclearxin


写个实例行不行
作者: luyi1983    时间: 2010-10-12 14:03
perl -wpi.bak -e \"if (/NAME/ ){s/NAME/QQ/g}\" ufile
作者: baoyu05    时间: 2010-10-12 14:57
回复 13# luyi1983


    大哥,我想写在脚本里啊,不是在命令行




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