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).