#name complete(cs) len(cs) simple(ss) len(ss) pos(cs) NAME1 A0AAA000AAA00A 14 AAAAAAAA 8 4,6 NAME2 AAAA0AA00000A 13 AAAAAAA 7 7 #### $ perl -anle ' print "$_ position(cs)" and next if /^#/; printf "%s",$_; for $pos_ss (split ",",$F[5]) { $char = substr($F[1],$pos_ss-1,1); @cs = split //,$F[3]; @cs_idx = grep {$cs[$_] eq $char} 0..$#cs; push @res,++$cs_idx[$pos_ss-1]; } printf "%14s\n", join ",",@res; @res=(); ' file #### NAME1 A0AAA000AAA00A 14 AAAAAAAA 8 4,9 3,5 NAME2 AAAA0AA00000A 13 AAAAAAA 7 7 6