file=myfile
for class in alnum alpha blank cntrl digit graph lower print punct space upper xdigit
do
printf '%7s: %d\n' "$class" "$(tr -Cd "[:${class}:]" < "$file" | wc -m)"
done
ascii
e word
não são classes de caracteres padrão e são bash
específicas. word
é alnum
mais sublinhado e ascii
é caracteres de 0 a 127, então você pode fazer:
printf '%7s: %d\n' word "$(tr -Cd "_[:alnum:]" < "$file" | wc -m)"
printf '%7s: %d\n' ascii "$(LC_ALL=C tr -cd 'file=myfile
for class in alnum alpha blank cntrl digit graph lower print punct space upper xdigit
do
printf '%7s: %d\n' "$class" "$(tr -Cd "[:${class}:]" < "$file" | wc -m)"
done
-7' < "$file" | wc -c)"
(note que a implementação GNU de tr
, a partir do coreutils-8.22, não funcionará com caracteres multi-byte).