今天碰到群内的朋友在求助,想使用perl实现下面这种需求:
检测冒号前面的字符串,若有相同的则依次改为字符串_1、字符串_2 ....
目标文件覆盖源文件即可。
如:
文件test.txt:
文件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