#Pure Bash (no external programs), 164
Pure Bash (no external programs), 164
This is longer than I'd hoped, but I wanted to see if the necessary counting and sorting (in the right direction) could be done purely with bash
arrays (associative and non-associative):
declare -A c
for w in ${@//[[:punct:]]/ };{ ((c[$w]++));}
for w in ${!c[@]};{ i=${c[$w]};((m=i>m?i:m));s[$i]+=$w:;}
for((i=m;i>0;i--));{ printf "${s[i]//:/:$i
}";}
Save as a script file, chmod +x
, and run:
$ ./countoccur This is a text and a number: 31. a:2 and:1 number:1 text:1 31:1 is:1 This:1 $