有
DEST_PATH='/var/www/clones'
site='xyz.com'
sed -i -e "s/\$log_path\s=\s'\(.*\)'/\$log_path = '$DEST_PATH\/$site\/logs'/" $DEST_PATH/$site/configuration.php
问题是第一个变量中的正斜杠,因为这是正在处理并返回错误:
sed -i -e "s/\$log_path\s=\s'\(.*\)'/\$log_path = '/var/www/clones\/xyz.com\/logs'/" configuration.php
这实际上是应该运行的时间:
sed -i -e "s/\$log_path\s=\s'\(.*\)'/\$log_path = '\/var\/www\/clones\/xyz.com\/logs'/" configuration.php
所以我知道,我可以替换所有的/
内部$DEST_PATH
,然后sed
再次运行,但是我想知道您是否知道或可以想到任何其他/更好的方法。理想情况下,如果可能sed
的'$DEST_PATH/$site/logs'
话,可能会自动转义。
您是否正在使用足够现代的版本sed
(例如GNU sed
)?这样就不需要使用/
来分隔模式和替换。任何角色都可以。
例如,您可以使用
s,pattern,substitution,
代替
s/pattern/substitution/
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句