【发布时间】:2014-08-20 18:18:05
【问题描述】:
我在使用 bash 脚本中的以下表达式时遇到了一些问题:
ipreg=^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$
sed -i 's/\"https:\/\/'$ipreg':9999\",/\"https:\/\/'${newip}':9999\",/g' /usr/share/config.file
Sed 无法使用 var ipreg 找到旧的 IP 地址,但如果我输入确切的地址,它确实会被新 IP 替换。
【问题讨论】:
-
这是因为您在
sed命令中使用了单引号,并且变量未展开。只需将sed '...'更改为sed "..."。 -
@fedorqui 我不认为这是导致 OP 问题的唯一原因。用作
s/.../.../分隔符的斜线也出现在https//中。他应该改用s:...:...:(或任何非斜线符号) -
您能否展示您的
/usr/share/config.file文件的样本? -
这里是文件的一些行.. / "10.10.10.10:9999", /* @scratch /configuration/config.js/5 * * ==== default_route *
-
当我删除 '$ipreg' 并运行 sed -i 's/\"https:\/\/10.10.10.10.:9999\",/\"https:\/\/' ${newip}':9999\",/g' /usr/share/config.file 它正在工作