Combinando um endereço IP dentro de um intervalo especificado usando o awk

0

Em uma lista de endereços IP separados por novas linhas, estou tentando corresponder apenas a 172 endereços internos (por exemplo, 172.16.x - 172.31.x). Eu tentei isso, mas não está funcionando:

awk '$1 ~ /^172.[1-3][6-9]|[0-1]/'

O que estou fazendo de errado?

    
por Dan 10.01.2017 / 04:58

1 resposta

3

O padrão ^172.[1-3][6-9]|[0-1] corresponde a coisas como

172x39
40

o último porque você corresponde a qualquer coisa com um 0 ou um 1 no primeiro campo.

Você precisa alterar o . para \. para torná-lo um ponto literal, é necessário introduzir o agrupamento e você precisa de um padrão melhor.

 ^172\.(1[6-9]|2[0-9]|3[0-1])\.
    
por 10.01.2017 / 05:06

Tags