使用'sed'以替换字符串




我有一个包含URL的文件,我希望用新的URL替换此URL。这个URL每次都可能不同,所以我不想用YYY代替XXX,而是想更改包含URL的变量的值。

文件如下:

APP_URL=https://test.hello.co/

我希望将APP_URL的值更改为其他URL,但没有成功
我正在使用bash脚本来实现这一点。
尝试在我的脚本中使用它,但没有成功。

oldline='APP_URL=https://test.hello.co'
newline='APP_URL=https://${variable}'
sudo sed -i 's/${oldline}/${newline}/g' .env

我很想在这里得到帮助!
谢谢:(

您需要删除sed中的'并转义所有/,这样它就不会认为您正在结束s的部分(或使用其他符号(这两项工作(我的文件名是.test(:

variable=aaaaaaaaaaaaaaaaaaaaaaaaa
oldline='APP_URL=S+'
newline='APP_URL=https://'$variable
sed -r s/${oldline}/${newline}/g .test
oldline='APP_URL=S+'
newline='APP_URL=https://'$variable
sed -r s-${oldline}-${newline}-g .test

单引号可防止变量插值。

您通常可以使用双引号。

$: cat tst
oldurl=test.hello.co
newurl=foo.bar.com
sed "s,APP_URL=https://${oldurl}/,APP_URL=https://${newurl}/,g" file
$: cat file
APP_URL=https://test.hello.co/
$: ./tst
APP_URL=https://foo.bar.com/

编辑

是的,这可以简化很多,比如通过传递新的url。

$: grep . tst file
tst:sed -E "s,APP_URL=https://[^/]+/,APP_URL=https://$1/,g" file
file:APP_URL=https://test.hello.co/
$: ./tst a.b.c
APP_URL=https://a.b.c/

相关内容

  • 没有找到相关文章

最新更新