标题: [技术讨论] Perl版按规则替换文本 [打印本页]
作者: sxw 时间: 2011-10-18 23:40 标题: Perl版按规则替换文本
本帖最后由 sxw 于 2011-10-22 18:54 编辑
之前有601997526 写出了批版的,地址在http://www.bathome.net/thread-14419-1-1.html
现给出Perl版(欢迎讨论指正):- #!/usr/bin/perl
- use strict;
- use warnings;
- my %hash;
- open (my $in,"<","a.txt") or die;
- while (<$in>) {
- next if /^$/;
- chomp;
- my ($ori,$rep)=split /\|/;
- $hash{$ori}=$rep;
- }
- close $in;
-
- open my $fh,"<","text.txt" or die;
- while (<$fh>) {
- foreach my $key (keys %hash) {
- my $regex=qr|\Q$key\E|;
- s/$regex/$hash{$key}/g;
- }
- print;
- }
- close $fh;
复制代码
根据a.txt中的替换规则,目标文件为text.txt。
将text.txt中的每一行按如下规则替换:
如果出现|左边的字符全部替换为|右边的字符
a.txt类似下面的内容:(用|分隔,且其左右两边不再有其它的|)- aaa|bbb_
- zzz|_aaa
- 123|321
- ___|---
- +++|$$$
- (((|)))
- <<<|>>>
- """|'''
- ```|""""
- ...|^^^
复制代码
作者: Batcher 时间: 2011-10-22 16:36
在顶楼给个链接吧,以便他人对照BAT版的代码。
作者: sxw 时间: 2011-10-22 17:33
回复 2# Batcher
好的。。。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |