在替换命令'/'中获取坏标志以替换sed

Dis*_*ame 3 bash sed

我在sed命令中使用replace时遇到了一个问题.我有一个名为的文件a.txt,我想用其他一行代替一行,但我得到上面提到的错误.

代码我想要替换:

DOMAIN_LOCAL = "http://127.0.0.1:3000";
Run Code Online (Sandbox Code Playgroud)

我希望它替换为任何其他IP让我们说如下: -

DOMAIN_LOCAL = "http://127.1.1.2:3000";
Run Code Online (Sandbox Code Playgroud)

我尝试了什么: -

ip=http://127.1.1.2:3000
sed "s/DOMAIN_LOCAL = .*$/DOMAIN_LOCAL = "$ip";/g" a.txt
Run Code Online (Sandbox Code Playgroud)

但它给了我以下错误.有人可以在这帮忙.

sed: 1: "s/DOMAIN_LOCAL = .*$/DO ...": bad flag in substitute command: '/'
Run Code Online (Sandbox Code Playgroud)

and*_*lrc 8

您将需要使用另一个分隔符.逃避$或使用单引号:

% ip="http://127.1.1.2:3000"
% sed 's~DOMAIN_LOCAL = .*$~DOMAIN_LOCAL = "'"$ip"'";~' a.txt
DOMAIN_LOCAL = http://127.1.1.2:3000;
Run Code Online (Sandbox Code Playgroud)

当您/substitute命令中用作分隔符时,它将在第一个斜杠中终止http://:

sed 's/DOMAIN_LOCAL = .*$/DOMAIN_LOCAL = http://127.1.1.2:3000;/'
#                                             ^ here
Run Code Online (Sandbox Code Playgroud)

分解:

sed 's~DOMAIN_LOCAL = .*$~DOMAIN_LOCAL = "'"$ip"'";~' a.txt
#   ?                                    ??? Use double quotes to avoid word splitting and
#   ?                                    ??  globbing on $ip
#   ?                                    ?? Exit single quotes
#   ?                                    ? Literal double quotes
#   ? Using single quotes to avoid having to escape special characters
Run Code Online (Sandbox Code Playgroud)