Ao combinar hífens com [...]
, o hífen precisa ser o primeiro ou o último dentro dele:
grep '[A-Z_-]' ...
Se você colocar o hífen em qualquer outro lugar, ele será considerado especificando um intervalo.
Além disso, \
é literal em [...]
(se a expressão como um todo é citada no shell), então [\-]
corresponde a uma barra invertida ou a um hífen e [\-_]
provavelmente corresponde a \
, ]
, ^
ou _
(esses são os caracteres no intervalo de \
a _
na tabela ASCII).