首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

大侠请留步!linux上perl操作字符串有关问题

2012-09-25 
大侠请留步!!!linux下perl操作字符串问题。需求:检测冒号前面的字符串,若有相同的则依次改为字符串_1、字符

大侠请留步!!!linux下perl操作字符串问题。
需求:
 
检测冒号前面的字符串,若有相同的则依次改为字符串_1、字符串_2 ....
每一行的顺序不变。结果输出到目标文件里。
 
如:
文件test.txt:
aa:1233444
bb:1212123123
cc:dasfasdfsdf
aa:sfssdfsdfsd
ddfasdfasdf
dd:dasdf
bb:sd
aa:asfasfdsd
 
执行结果:
 
文件data.txt:
aa:1233444
bb:1212123123
cc:dasfasdfsdf
aa_1:sfssdfsdfsd
ddfasdfasdf
dd:dasdf
bb_1:sd
aa_2:asfasfdsd

[解决办法]

Perl code
#!/usr/bin/perl%words;open $rd, '<', 'test.txt' or die $!;open $wt, '>', 'data.txt' or die $!;while (<$rd>) {    ($k) = split /:/;    if ($words{$k}) {        s{^($k)}{$1_$words{$1}};    }    print $wt "$_";    $words{$k} += 1;}close $wt or die $!;close $rd or die $!;
[解决办法]
Perl code
#!/usr/bin/perl -wmy $pat = "^(\\w+):";my %words;while (<>) {  if (/$pat/) {    if ($words{$1}) {      s/$pat/$1_$words{$1}/;    }    $words{$1}++;  }  print;} 

热点排行