我是Sed的新手,你可能会想象你可以早点迷路......
我在PHP页面中有以下变量,我正在尝试使用bash脚本进行更改:
$username='';
我想给它一个存储在$ myUsername中的扩展变量值,以便最终条目如下所示:
$username='someName';
我相信我接近以下,但似乎无法越过终点线......
sed -i 's/"$username = ''".*$/\$username = /"${myUsername}/"' /var/www/settings.php
感谢您的教育/帮助
答案 0 :(得分:1)
你几乎就在那里,例如使用这个改进的版本:
sed -i "s/\$username = ''/\$username = '$myUsername'/" file
请注意,要使用变量,您需要使用双引号。否则,该变量不会被扩展。另外,这就是为什么需要使用$username
转义\$username
,以避免将其解释为bash变量$username
。
$ cat a
hello
$username = '';
bye
$ myUsername="bu"
$ sed "s/\$username = ''/\$username = '$myUsername'/" a
hello
$username = 'bu';
bye
$ myUsername="hello"
$ sed "s/\$username = ''/\$username = '$myUsername'/" a
hello
$username = 'hello';
bye
您还可以通过捕获块来改进方法。它与\( block \)
语法一起使用,并使用\1
打印回来:
$ sed "s/\(\$username = \)''/\1'$myUsername'/" a
hello
$username = 'hello';
bye