perl割文本小记

今天碰到群内的朋友在求助,想使用perl实现下面这种需求:

检测冒号前面的字符串,若有相同的则依次改为字符串_1、字符串_2 ....
目标文件覆盖源文件即可。
如:
文件test.txt:
aa:1233444
bb:1212123123
cc:dasfasdfsdf
aa:sfssdfsdfsd
ddfasdfasdf
dd:dasdf
bb:sd
aa:asfasfdsd

 

执行结果:
文件test.txt:
aa:1233444
bb:1212123123
cc:dasfasdfsdf
aa_1:sfssdfsdfsd
ddfasdfasdf
dd:dasdf
bb_1:sd
aa_2:asfasfdsd

 

使用了一下语句实现

perl -ne '(/(\w+)(:.*)/) ? ((($hash{$1}) ? print "$1_$hash{$1}$2\n" : print) && $hash{$1}++) : print;'  test.txt > dest.file

posted @ 2012-07-23 23:23  沉默爆破手  阅读(177)  评论(0编辑  收藏  举报