# warning windows doublequotes perl -lnE "$ar[0]++; $ar[pos]{$1}++ while /(.)/g; END{ foreach $row (1..$#ar){print join qq(\t),$row,map{$_,sprintf('%.2f',$ar[$row]{$_}/$ar[0] )} sort keys %{$ar[$row]}} }" freq.txt 1 A 0.75 B 0.25 2 A 1.00 3 A 0.25 B 0.50 C 0.25 4 B 1.00 5 B 0.25 C 0.50 D 0.25