qq489498494 发表于 2015-12-28 13:05:48

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
页: [1]
查看完整版本: perl割文本小记