我需要找到以 开头的行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
请注意,主要替换的双引号很重要,这样替换字符串才会被解释。