Como imprimir a partir de um determinado intervalo de endereços IP, cada classe-c com o último octeto substituído por um asterisco

2

exemplo: Eu tenho um intervalo de 10.0.100.0 a 10.0.224.0 e eu quero a saída assim:

10.0.100.*
10.0.101.*
10.0.102.*

e assim por diante

    
por skexris 23.03.2015 / 19:23

2 respostas

3
$ printf '%s\n' 10.0.{100..224}.\*
10.0.100.*
10.0.101.*
10.0.102.*
10.0.103.*
10.0.104.*
10.0.105.*
[...snip...]
    
por 23.03.2015 / 19:26
1

Experimente sed :

$ sed -i 's/[0-9]\+$/\*/' file.txt 
10.0.100.*
10.0.101.*
10.0.102.*

EDIT: Se você deseja gerar o intervalo primeiro e depois substituir o último octeto, tente isto:

Para gerar o intervalo, você pode usar echo 10.0.{100..224}.0 | tr ' ' '\n' (a resposta de John1024 mostra outra maneira de usar printf ).

Agora, substitua o último octeto por * e salve-o em um arquivo:

$ echo 10.0.{100..224}.0 | tr ' ' '\n' | sed 's/[0-9]\+$/\*/' > output.txt

Se você quiser apenas imprimir a saída:

$echo 10.0.{100..224}.0 | tr ' ' '\n' | sed -n 's/[0-9]\+$/\*/p'

Embora, no seu caso, eu sugira que você apenas disponibilize o último octeto * ao gerar o intervalo (verifique a resposta de John1024 ).

    
por 23.03.2015 / 19:26