Uso:
REGEXP='^[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0-9-]+$'
Para selecionar quais caracteres você deseja. O que é correspondido por [a-z]
só é garantido como [abcdefghijkmnopqrstuvwxyz]
no código do idioma C / POSIX.
(suponho que você não queira que a barra invertida seja incluída, mas que \
foi uma tentativa equivocada de escapar do -
).
Outra opção é corrigir a localidade para C antes de usar a ferramenta que avalia que ^[a-zA-Z0-9-]+$
estendido regexp (ou ^[[:alnum:]-]+$
), como:
LC_ALL=C grep -Ee "$REGEXP"
Isso é válido neste caso, mas não em casos como REGEXP='[A-Z]'
no caso de os dados para corresponderem ao regexp estarem em um conjunto de caracteres como BIG5-HKSCS ou GB18030 (e em locais que usam esse mesmo caractere) onde muitos caracteres codificações que contêm a mesma codificação que as de A-Z
.
Exemplo em que [A-Z]
corresponde a Á
(U + 00C1, codificado como 0x88 0x57 em BIG5-HKSCS (em que 0x57 também é W
)):
$ LC_ALL=zh_HK.big5hkscs REGEXP='[A-Z]' bash -c 'printf "\uc1\n" |
LC_ALL=C grep -qe "$REGEXP" && echo match'
match