Como faço para escapar de um ponto / período no jogo de string bash

1

Este é meu primeiro post, e estou realmente apreciando todas as respostas que me ajudaram até agora nesse site, espero que este não seja um post redundante, mas não consegui encontrar algo semelhante aqui.

Eu tento dividir uma String que recuperarei de um arquivo em IPs separados.
A string seria como: . something:[12.12.12.12],[13.13.13.13]

Estou tentando fazer uma manipulação de String conforme descrito no tldp
expr "$string" : '\($substring\)'

Ao tentar escapar de um ponto / período, ele não o encontrará:

testString=[12.12.12.12],[13.13.13.13]
echo 'expr "$stringZ" : '\(\[.{1,3}\..{1,3}\..{1,3}\..{1,3}\]\)''

Eu notei que tenho que escapar em dobro [e tentei fazê-lo com o ponto / ponto, mas isso não ajuda.
Como posso conseguir isso?

Sim, eu sei que este regex não é muito bom, mas eu gostaria de resolver o problema ponto / período primeiro, antes de fazer mais sobre o regex.

Muito obrigado

    
por Andreas Grimm 03.11.2015 / 13:27

1 resposta

0

Você pode usar a expansão de parâmetros:

#!/bin/bash
string='. something:[12.12.12.12],[13.13.13.13]'

string=${string##*:}         # Delete up to the last colon.
string=${string//[^0-9.]/ }  # What's not a dot or digit gets replaced by a space.

for ip in $string ; do
    echo "IP: $ip!"
done
    
por 04.11.2015 / 15:07