Sed SH-替换文本
我想用另一个字符串替换一个字符串,但我不能。代码是:Sed SH-替换文本,sed,replace,sh,Sed,Replace,Sh,我想用另一个字符串替换一个字符串,但我不能。代码是: updatedb MCRYPTINI=$(locate mcrypt.ini | grep 'apache2') MCRYPTSO=$(locate mcrypt.so | grep "/mcrypt.so") OLD="extension=mcrypt.so" NEW="extension=$MCRYPTSO" echo $MCRYPTINI echo $MCRYPTSO echo $OLD echo $NEW echo "'s/$OL
updatedb
MCRYPTINI=$(locate mcrypt.ini | grep 'apache2')
MCRYPTSO=$(locate mcrypt.so | grep "/mcrypt.so")
OLD="extension=mcrypt.so"
NEW="extension=$MCRYPTSO"
echo $MCRYPTINI
echo $MCRYPTSO
echo $OLD
echo $NEW
echo "'s/$OLD/$NEW' $MCRYPTINI"
sed -i 's/$OLD/$NEW' $MCRYPTINI
结果是:
sudo sh testScript.sh
/etc/php5/apache2/conf.d/20-mcrypt.ini
/usr/lib/php5/20121212/mcrypt.so
extension=mcrypt.so
extension=/usr/lib/php5/20121212/mcrypt.so
's/extension=mcrypt.so/extension=/usr/lib/php5/20121212/mcrypt.so' /etc/php5/apache2/conf.d/20-mcrypt.ini
sed: -e expression #1, char 11: unterminated `s' command
对于响应,我不需要使用“sed”,但它看起来很简单而且很好。
我使用sh而不是bash,因为我希望代码可以在所有系统中使用,所以我更喜欢遵循这一原则的答案
更新
sed -i "s/$OLD/$NEW/" $MCRYPTINI
错误:
sed: -e expression #1, char 14: unknown option to `s'
添加斜杠和双引号:
sed -i "s/$OLD/$NEW/" file
解决办法可以是:
sed -i "s/$OLD/$NEW/" $MCRYPTINI
但是$NEW
是一个路径,所以我需要用其他字符更改“/”,例如“+”
您是否已尝试在
sed
表达式中的$NEW
之后添加/
?好的,这就解决了问题。。。但是字符串没有更改最后一个斜杠的可能重复项是正确的,但是带有双引号-->sed:-e expression#1,char 34:unknown选项到's'@oootramas:最后一个斜杠在代码段中丢失。并且还需要添加双引号。
sed -i "s+$OLD+$NEW+" $MCRYPTINI