使用 Perl 脚本做文件内容替换
发布时间:2020-12-16 00:11:11 所属栏目:大数据 来源:网络整理
导读:本人是Perl语言初学者,仅仅是读完?Perl语言入门(第四版).pdf,工作中写过几个小脚本。 感觉Perl语言处理文本任务确实很强大,准备写些个笔记用于知识积累。 最近工作中需要更新很多个文件,每个文件只需要更新字符串资源的字符串 id ,文件是 xml 格式的(P
本人是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; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |