Permitir apenas regex hexadecimal

0

Eu quero um regex usando o comando grep, que apenas imprime as strings em formato hexadecimal.

Este é o meu comando:

grep "0x[A-Fa-f0-9]{1,6}" test.txt

test.txt:

0x2a
0xF
0x1111
0x0ZZZ
0x4dz5

Resultado esperado:

0x2a
0xF
0x1111

Saída: Vazio

Como fazer isso? Obrigado

    
por O'Niel 12.10.2017 / 19:14

1 resposta

2

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:

por 12.10.2017 / 19:49