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: