免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1622 | 回复: 3
打印 上一主题 下一主题

初学2天问个低级问题(文本小处理) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-12-21 10:35 |只看该作者 |倒序浏览
问题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 文件没有替换成功,是不是还要什么操作漏了?

论坛徽章:
0
2 [报告]
发表于 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;


复制代码

论坛徽章:
0
3 [报告]
发表于 2010-12-21 11:02 |只看该作者
本帖最后由 穆赫兰道 于 2010-12-21 11:06 编辑

谢谢楼上帮助

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

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

即补充说明2点:
1.不产生新文件,不备份,就原文件修改,当然删除原文件,重新拷贝是可以的。
2.替换成功的文件的文件名必须是原文件名,系统只认那个文件名。

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
4 [报告]
发表于 2010-12-21 14:53 |只看该作者
perl -i.bak -pe "s/hello/java/ig" helloworld

你是不是把 -e 换错地方了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP