Apenas no shell:
IPS='192.9.200.12-14 172.17.200.12-89 12.21.1.10-25 127.0.0.1-127'
echo $(IFS=\ .; printf %s.%s.%s,%s\ $IPS)
OUTPUT
192.9.200,12-14 172.17.200,12-89 12.21.1,10-25 127.0.0,1-127
Mas uma maneira melhor, na qual você pode realmente trabalhar com uma matriz, é transformá-la em uma função:
iprng() (IFS=.;for ip do printf %s.%s.%s,%s\n $ip; done)
iprng $IPS
OUTPUT
192.9.200,12-14
172.17.200,12-89
12.21.1,10-25
127.0.0,1-127
ou ...
echo $(iprng $IPS)
OUTPUT
192.9.200,12-14 172.17.200,12-89 12.21.1,10-25 127.0.0,1-127
Como você pode ver, é praticamente a mesma coisa que é feita em outro lugar com awk
, exceto que isso é feito de maneira mais simples e sem invocar outro executável.