Você pode fazer isso com um comando awk
mais facilmente:
your-command | awk -F\" -v OFS=. -v ORS=' ' '{print $2, $4, $6, $8}'
Para definir como variável, use substituição de comando:
myVariable="$(your-command | awk -F\" -v OFS=. -v ORS=' ' '{print $2, $4, $6, $8}')"
-F
define o separador de campos de entrada (que é por padrão qualquer espaço em branco) para um valor personalizado; neste caso, uma aspa dupla ( "
).
-v
permite que você defina awk
variáveis.
OFS
é o separador do campo de saída, por padrão, um único espaço. Nós configuramos isso para um período.
ORS
é o separador de saída record , por padrão, uma nova linha. Nós configuramos isso para um espaço.
Em seguida, imprimimos os 2º, 4º, 6º e 8º campos para cada linha da entrada.
Exemplo de saída:
$ cat temp
id1="172" id2="17" id3="136" id4="5" id5="0" />
id1="172" id2="17" id3="128" id4="2" id5="0" />
id1="172" id2="17" id3="128" id4="4" id5="0" />
id1="172" id2="17" id3="128" id4="6" id5="0" />
$ myVariable="$(cat temp | awk -F\" -v OFS=. -v ORS=' ' '{print $2, $4, $6, $8}')"
$ echo "$myVariable"
172.17.136.5 172.17.128.2 172.17.128.4 172.17.128.6
$