免费注册 查看新帖 |

Chinaunix

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

perl读取文件中的一行,并替换其中的某些字符 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-07-19 19:52 |只看该作者 |倒序浏览
本帖最后由 liuqiong7618 于 2010-07-21 10:49 编辑

这是的自己写的一个perl脚本--我不太会写
麻烦大家帮我看看,怎么无法运行:

我的目的是,打开一个文件,然后查找某行文件是否包含字串“disable = yes”,如果有,则将yes修改为no

if (!open(FILE,"文件名"))
    {
        print "The file cannot found";
        exit;
    }
else{
          while ($line = <>)
         {
      
             printf $line;

            #如果line中,有包含字串"disable ",则赋值给line1
            line1 ='"$line" | grep "disable"';
   
            if [-n "$line1" ]
            then
            sed 's/yes/no/'; 将yes修改为no
           #else
            #then print "The string cannot be found";
          }
}

论坛徽章:
0
2 [报告]
发表于 2010-07-20 09:11 |只看该作者
用vim:
:s/disable = yes/disable = no/g
或者perl同样的功能
while(<>){
chomp;
s/disable = yes/disable = no/g;
}
嘿嘿,这个有点笨的方法。

论坛徽章:
0
3 [报告]
发表于 2010-07-20 20:30 |只看该作者
lz有点复杂化了...

论坛徽章:
0
4 [报告]
发表于 2010-07-21 10:35 |只看该作者
本帖最后由 liuqiong7618 于 2010-07-21 10:53 编辑

line1 ='"$line" | grep "disable"';
   
            if [-n "$line1" ]
为什么这里老是运行不过去呢

我第一次写这个,看不懂哪里有问题

论坛徽章:
0
5 [报告]
发表于 2010-07-21 10:51 |只看该作者
hi kgn28:

s/disable = yes/disable = no/g;
我试过这个方法,还是不行,,yes没有修改成no

会不会是disable = yes之间的空格不一定,,那文档里面是disable         =yes

那怎么把中间的空格给屏蔽了呢....
一路征程一路笑 该用户已被删除
6 [报告]
发表于 2010-07-21 11:03 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
7 [报告]
发表于 2010-07-21 11:32 |只看该作者
楼上的GG:
while(<>){
$_ =~ s/yes/no/ if m/disable = yes/
}

是这个意思吗??
我也运行了下,还是没有修改成功

论坛徽章:
0
8 [报告]
发表于 2010-07-21 11:57 |只看该作者
回复 7# liuqiong7618


    if m/disable\s*=\s*no/

论坛徽章:
0
9 [报告]
发表于 2010-07-21 12:26 |只看该作者
谢谢kgn28 和一路征程一路笑 两位

while(<>){

$_ =~ s/yes/no/ if m/disable\s*=\s*yes/
printf $_
}

这样运行后,打印出来的结果显示将yes成功替换成no了

论坛徽章:
0
10 [报告]
发表于 2010-07-21 13:46 |只看该作者
这样运行后,打印出来$_的结果显示将yes成功替换成no了

但是将那个文件打开后,字串却还是yes

后来,别人介绍说if (!open(FILE,"文件名")),这种方式打开,是以只读方式打开

如果修改成if (!open(FILE,">文件名")),这是可写方式,它会把整个文档清空

那怎么保存这个文件呀
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP