sed 将替换行存储在变量中

sed 将替换行存储在变量中

我需要找到以 开头的行mysql.unmetric.twt.url,并用存储在变量 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"

如何使用 sed 实现这一点?

答案1

有两个阶段:首先,您需要转义以下任何特殊字符$ip

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

然后您需要执行替换:

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

这些加在一起给出:

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

请注意,主要替换的双引号很重要,这样替换字符串才会被解释。

相关内容