Formato Regex para corresponder a uma cadeia numérica

0

Eu quero corresponder uma string, basicamente um formato regex em que quero corresponder números de 0-255 & 257 acima. Isso significa que, exceto 256 a cada número.

Alguém pode ajudar com o formato regex para o mesmo?

    
por Vish 10.10.2017 / 06:27

1 resposta

1

Pelo que entendi, esses números são todos inteiros. A idéia é combinar e exibir entradas que contenham esses números, mas 256, precedidos ou não pelos zeros iniciais.

Seus números devem ser em uma única linha :

grep "^[0-9][0-9]*$" | grep -v "^0*256$"

( grep -v exclui as linhas que correspondem em vez de incluí-las)

Ouput:

$ echo "12" | grep "^[0-9][0-9]*$" | grep -v "^0*256$"
12

$ echo "2567" | grep "^[0-9][0-9]*$" | grep -v "^0*256$"
2567

$ echo "256" | grep "^[0-9][0-9]*$" | grep -v "^0*256$"

$ echo "0256" | grep "^[0-9][0-9]*$" | grep -v "^0*256$"

$ echo "something" | grep "^[0-9][0-9]*$" | grep -v "^0*256$"

Se você estiver usando outro separador:

Por exemplo, você pode pré-processar suas entradas usando sed para torná-las compatíveis com os comandos grep acima. Aqui, com uma entrada delimitada por coma, onde cada coma é substituído por um avanço de linha ( \n ):

sed -r 's/,/\n/g'

Saída:

$ echo "2567,255,256,12,something,05,0256" | sed -r 's/,/\n/g' | grep "^[0-9][0-9]*$" | grep -v "^0*256$"
2567
255
12
05

E, finalmente, os números devem ser misturados com outros caracteres aleatórios:

Nesse caso, uma etapa extra permite remover todos os caracteres não numéricos:

sed -r 's/[^0-9]//g'

Saída:

$ echo "2567,255,256,mama256a,papa1812b,something,05,0256" | sed -r 's/,/\n/g' | sed -r 's/[^0-9]//g' | grep "^[0-9][0-9]*$" | grep -v "^0*256$"
2567
255
1812
05
    
por 10.10.2017 / 09:39