Você pode usar uma combinação de sed
e sort
:
$ echo "Johnny's penguin, (Tuxie), likes the following foods: French fries, and beef." |
> sed 's/./&\n/g' | LC_COLLATE=C sort -u | tr -d '\n'
'(),.:FJTabcdefghiklnoprstuwxy
sort
faz ordenação lexicográfica, então veja man 7 ascii
para ver como os caracteres serão ordenados.
Explicação:
-
sed 's/./&\n/g'
- adiciona uma nova linha após cada caractere, poissort
(geralmente) faz a classificação linha por linha -
LC_COLLATE=C
define o estilo de agrupamento comoC
(consulte O que significa “LC_ALL = C 'fazer? ) -
sort -u
: classifica a entrada e imprime somente as entradas exclusivas -
tr -d '\n'
exclui todas as novas linhas extras.
Se você quiser manter apenas caracteres visíveis:
$ echo "Johnny's penguin, (Tuxie), likes the following foods: French fries, and beef." |
> tr -cd '[[:graph:]]' | sed 's/./&\n/g' | LC_COLLATE=C sort -u | tr -d '\n'
-
tr -cd '[[:graph:]]'
exclui tudo, exceto os caracteres visíveis.