Com grep
e assumindo uma palavra por linha:
grep -E '[[:digit:]]|^([[:lower:]]+|[[:upper:]]+)$'
Para relatar todas as palavras correspondentes em um texto, com potencialmente várias palavras por linha, palavras delimitadas por caracteres que não são de palavras:
<text tr -cs '[:alnum:][:digit:]_' '[\n*]' |
grep -E '[[:digit:]]|^([[:lower:]]+|[[:upper:]]+)$'
Note que você precisa de uma implementação tr
compatível com POSIX, o GNU tr
não fará. Nos sistemas GNU, você pode usar sed
:
<text sed -E 's/\W+/\n/g' |
grep -E '[[:digit:]]|^([[:lower:]]+|[[:upper:]]+)$'