Sed substituir linha armazenada em uma variável

0

Eu preciso encontrar uma linha que comece com mysql.unmetric.twt.url e substitua toda a linha pela linha armazenada na variável ip.

ip="mysql.unmetric.twt.url=jdbc:mysql://ec2-a-b-c-d.compute-1.amazonaws.com:3306/unmetric? jdbcCompliantTruncation=false&useUnicode=yes&characterEncoding=UTF-8&useOldAliasMetadataBehavior=true"

Como isso pode ser conseguido usando sed?

    
por Prashanth Ganesh 09.01.2015 / 13:58

1 resposta

1

Existem dois estágios: primeiro você precisa escapar de qualquer caractere especial em $ip :

echo $ip|sed 's#[./&?]#\&#g'

Então você precisa realizar a substituição:

sed -i "s/^mysql\.unmetric\.twt\.url.*$/replacement/g" filename

Juntos, eles dão:

sed -i "s/^mysql\.unmetric\.twt\.url.*$/$(echo $ip|sed 's#[./&?]#\&#g')/g" filename

Note que as aspas duplas para a substituição principal são importantes, de modo que a string de substituição será interpretada.

    
por 09.01.2015 / 14:34

Tags