A sintaxe {n,m} faz parte do conjunto de expressões regulares estendidas, o que significa que você precisa ativá-la no grep com o sinalizador -E . Para exigir que a linha completa corresponda à representação hexadecimal, adicione o sinalizador -x (ou use as% âncoras^ e $ ):
grep -Ex '0x[A-Fa-f0-9]{1,6}'
ou
grep -E '^0x[A-Fa-f0-9]{1,6}$'
Também alterei as aspas circunjacentes de double para single, para impedir a expansão não intencional do caractere $ .
Mais leitura de regex no Stack Exchange: