* em um regex não é como um nome de arquivo glob. Significa 0 ou mais do caractere / padrão anterior. Assim, seus exemplos estariam procurando por A , em seguida, 0 ou mais B , em seguida, -DEF
. in regex significa "qualquer caractere" para que você possa corrigir seu padrão usando
grep 'AB.*DEF'