О, весело! Вот несколько способов. Простейший (fold) уже задан, но вот способ его расширения, чтобы дать счеты для каждого символа:
$ fold -w 1 file | LC_ALL=C sort | uniq -c
11
2 "
1 '
1 (
1 )
3 ,
1 .
1 :
1 F
1 J
1 T
1 a
1 b
2 c
2 d
9 e
4 f
2 g
4 h
5 i
1 k
3 l
7 n
6 o
1 p
2 r
4 s
1 t
2 u
1 w
1 x
1 y
Использование LC_ALL=C устанавливает языковой стандарт в C для команды sort, что означает, что КАПИТАЛЫ сортируются до нижних регистрах по вашему запросу. Чтобы получить все это на одной строке без учета вхождений, но с тем же порядком сортировки, вы можете сделать
$ echo $(fold -w 1 file | LC_ALL=C sort -u | tr -d '\n')
"'(),.:FJTabcdefghiklnoprstuwxy
Вы также можете использовать Perl:
$ perl -lne '$k{$_}++ for split(//); END{print sort keys(%k)}' file
"'(),.:FJTabcdefghiklnoprstuwxy
Наконец , это способ, который также показывает специальные символы, такие как вкладки, символы новой строки и возврат каретки:
$ echo $(od -c file | grep -oP "^\d+ +\K.*" | tr -s ' ' '\n' |
LC_ALL=C sort -u | tr -d '\n')
"'(),.:FJT\n\r\tabcdefghiklnoprstuwxy
------
|-------------> special characters