Pure bash, 120120 107 bytes
d="$@"
d=$d=$*;d=${d//[ -z]/#}
for;for a;do((b[${#a}]++));done
e="$;done;e=${!b[@]b[*]}"
for;for((i=1;i<=$i=0;i++<${e##* };i++;));do
{ echo $i\|$$i ${d:0:b[i]}
done;}
Sample:or
.d=$*
d=${d/histogram.sh Very long strings of words should be just as easy to generate a histogram just as short strings of words are easy to generate a histogram/[ for.
1|##
2|#######
3|#
4|#######
5|###
6|#
7|##
8|##
9|##-z]/#}
Save 8 chars by using one fork to tr
: 112
for a;do((b[${#a}]++));done
e="$e=${!b[@]b[*]}"
for((i=1;i<=$i=0;i++<${e##* };i++;));do{
printfecho "%d|%$$i ${d:0:b[i]}s\n" $i
done|tr \ \#}
Give same result:or
bashd=$*;d=${d//[ -c 'forz]/#};for a;do((b[${#a}]++));done;e="$;done;e=${!b[@]b[*]}";for
for((i=1;i<=$i=0;i++<${e##* };i++;));
do{ printfecho "%d|%$$i ${d:0:b[i]}s\n";}
Sample:
./histogram.sh $i;done|trVery \long strings \#'of --words $(should sedbe 's/<[^>]*>//g;
s/<[^>]*$//;s/^[^<]*>//'just <as /usr/share/scribus/loremipsum/english.xmleasy )
render (on my host:)
1|############################################################
2|#################################################################################################################################################################################################################
3|####################################################################################################################################################################################################################################################
4|####################################################################################################################################################################################################
5|####################################################################################################################################################################
6|#######################################################################################
7|##########################################################################################
8|###################################################
9|###############################
10|####################
11|#########
12|############
13|#####
14|####
15|##
16|
17|
18|
19|
20|
21|
22|
23|
24|
25|to generate a histogram just as short strings of words are easy to generate a histogram for.
26|1 ##
27|2 #######
28|3 #
29|4 #######
30|5 ###
31|6 #
32|7 ##
33|8 ##
34|#9 ##