sed - corresponde ao octeto IP e remove a linha

0

Estou precisando de uma solução, de preferência sed, que possa corresponder a um octeto IP que contenha qualquer combinação de números e remova a linha. Por exemplo:

Meu arquivo:

 192.168.100.12
 192.168.200.12
 10.10.20.10
 10.10.30.20

Eu preciso remover a linha que contém qualquer IP encontrado na sub-rede 10.10.20.x e removê-lo. Então, se o arquivo contém 10.10.20.10, 20.11, 20.12, etc ... Todos eles são removidos. Eu também preciso de uma substituição inline.

O que tentei:

sed -i '/10\.10\.20\.\([0-9]\{1,3\}\)/d' file

e isso:

sed -i '/10.\.10\.20\.*\([0-9]\{1,3\}\)*/d' file​

E nenhum deles funciona. O comando é concluído sem erros, mas as linhas ainda estão no arquivo. Eu também estou aberto a outras soluções, como o awk.

    
por user53029 09.05.2016 / 03:41

1 resposta

2

Com o GNU sed:

sed -i '/10\.10\.20\.[[:digit:]]\{,3\}/d' file

Com o BSD sed, você precisa de sed -i '' .

    
por 09.05.2016 / 03:48