Всего одна команда awk
awk -vFS="" '{for(i=1;i<=NF;i++)w[$i]++}END{for(i in w) print i,w[i]}' file
, если вы хотите, чтобы регистр не учитывался, добавьте tolower()
awk -vFS="" '{for(i=1;i<=NF;i++)w[tolower($i)]++}END{for(i in w) print i,w[i]}' file
и, если вы хотите только символы,
awk -vFS="" '{for(i=1;i<=NF;i++){ if($i~/[a-zA-Z]/) { w[tolower($i)]++} } }END{for(i in w) print i,w[i]}' file
и если вам нужны только цифры, измените /[a-zA-Z]/
на /[0-9]/
, если вы не хотите показывать юникод, введите export LC_ALL=C