Como atribuir valor de variável com regex (bash)?

2

Eu quero usar o regex em bash na linha de atribuição de variáveis

por exemplo,

oldip="14\.130\.31\.172"
oldip_a="14.130.31.172" << How to use regex to del all '\'? and assign to oldip_a

Você tem alguma ideia?

    
por fronthem 14.03.2012 / 06:38

1 resposta

4

Para remover o \ , use a substituição do parâmetro bash.
// significa substituir all ... (um único / significaria substituir somente o primeiro)
//\ significa substituir todos os caracteres \ (barra invertida) /} significa substituir por nada (Não há nada entre / e% fechamento}

ip="14\.130\.31\.172"
echo "${ip//\/}"

Saída

14.130.31.172

Ou, se houver muitas ocorrências \. a fazer, em um arquivo com muitos desses endereços IP, você poderá atribuir cada valor modificado a um item de matriz.

ip=($(printf '
172.31.130.14
14\.130\.31\.172
33\.135\.220\.0
' | sed 's/\//g'))
for ((i=0;i<${#ip[@]};i++));do
  echo "${ip[i]}"
done

saída

172.31.130.14
14.130.31.172
33.135.220.0

.. Eu só notei que seu segundo item de dados é uma reversão do primeiro .. É isso que você quer como sua saída? (provavelmente não, mas me fez pensar) ..

    
por 14.03.2012 / 06:55

Tags