免费注册 查看新帖 |

Chinaunix

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

perl如何直接对文件进行修改 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-05 12:54 |只看该作者 |倒序浏览
我要对一个文本文件直接进行修改,比如说对某一行里<..........>的内容删除,我是将它替换成空字符
s/<.*>//g,
而我又不想将更改后的文件写进新的文件,能不能直接在原文件里修改,请各位大虾帮忙!不胜感激!

论坛徽章:
0
2 [报告]
发表于 2009-03-05 13:14 |只看该作者


  1. perl -pi.bak -e 's/<.*>//g;'  filename

复制代码

论坛徽章:
0
3 [报告]
发表于 2009-03-05 13:20 |只看该作者

回复 #2 hitsubunnu 的帖子

谢谢,这是用命令行吧。我想通过程序代码实现,因为需要对很多文件进行处理。

论坛徽章:
0
4 [报告]
发表于 2009-03-05 13:33 |只看该作者
正常方法都是

先写到 *.tmp 然后  unlink 再 rename

论坛徽章:
0
5 [报告]
发表于 2009-03-05 13:36 |只看该作者
你的问题相当于

怎么把同一个杯子里的咖啡在 不用第二个容器的情况下 换成牛奶?

--这是不可能的

论坛徽章:
0
6 [报告]
发表于 2009-03-05 14:19 |只看该作者
原帖由 libiqing77 于 2009-3-5 13:20 发表
谢谢,这是用命令行吧。我想通过程序代码实现,因为需要对很多文件进行处理。

你可以去CPAN上查查有没有类似的模块

论坛徽章:
0
7 [报告]
发表于 2009-03-05 14:21 |只看该作者
试试这个

File:: Data

[ 本帖最后由 shaneqi 于 2009-3-5 14:22 编辑 ]

论坛徽章:
0
8 [报告]
发表于 2009-03-05 18:06 |只看该作者

回复 #3 libiqing77 的帖子


  1. $^I=".bak";
  2. push @ARGV,"filenames_you_want_to_process";
  3. while(<>){
  4. do_you_things_here
  5. print; # This line is very important, don't miss it
  6. }
复制代码

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
9 [报告]
发表于 2009-03-06 14:32 |只看该作者
原帖由 libiqing77 于 2009-3-5 13:20 发表
谢谢,这是用命令行吧。我想通过程序代码实现,因为需要对很多文件进行处理。

你如果在 perlrun 中查查 -ip 什么意思就不会、也不应该说这话了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP