使用 Perl 脚本做文件内容替换

本人是Perl语言初学者,仅仅是读完 Perl语言入门(第四版).pdf,工作中写过几个小脚本。

感觉Perl语言处理文本任务确实很强大,准备写些个笔记用于知识积累。


最近工作中需要更新很多个文件,每个文件只需要更新字符串资源的字符串 id ,文件是 xml 格式的(Perl有强大的xml处理能力,这里直接当成文本文件处理了)。

基本上就是用新的id更新掉老的id,但是其他内容都是保持不变的。

直接使用文本比较工具进行更新的话,将会是个有着大量重复劳动的体力活。

我的办法是,使用比较工具把需要更新的内容摘取出来,形成两个文件,from 和 to ,分别是老的 id 和 新的 id。然后用脚本自动去执行更新这个动作,我们就可以去悠闲的去品咖啡了。

脚本内容相当简单:把 from 和 to 分别读取到两个数组存放。依次读取输入文件的每一行,如果是在 from 数组里面,就替换成 to数组里面的内容。(超级简单啊,甚至都不需要用到正则表达式哦)


#!perl -- update xml files

# open from.txt
open (FROM,"<from.txt");
my @From = <FROM>;
close FROM;

# open to.txt
open (TO, "<to.txt");
my @To = <TO>;
close TO;

# open input file
open (TOPROCESS, "<String.xml");
my @ToProcess = <TOPROCESS>;
close TOPROCESS;

# open output file
open (OUT, ">String.xml.txt");
select OUT;

# do the replace!
$counter = 0;
foreach $line(@ToProcess)
{
    if( $line eq $From[$counter])
    {
        $line = $To[$counter];
        $counter++;
    }
    print $line;
}
close OUT;


  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值