gpt4 book ai didi

bash - 在替换命令 '/' 中获取错误标志以进行 sed 替换

转载 作者:行者123 更新时间:2023-11-29 09:18:05 26 4
gpt4 key购买 nike

我在 sed 命令中使用 replace 时遇到一个问题。我有一个名为 a.txt 的文件,我想用其他行替换一行,但出现上述错误。

我要替换的代码:

DOMAIN_LOCAL = "http://127.0.0.1:3000";

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

DOMAIN_LOCAL = "http://127.1.1.2:3000";

我尝试过的:-

ip=http://127.1.1.2:3000
sed "s/DOMAIN_LOCAL = .*$/DOMAIN_LOCAL = "$ip";/g" a.txt

但它给我以下错误。有人可以帮忙吗。

sed: 1: "s/DOMAIN_LOCAL = .*$/DO ...": bad flag in substitute command: '/'

最佳答案

您将需要使用另一个分隔符。并转义 $ 或使用单引号:

% ip="http://127.1.1.2:3000"
% sed 's~DOMAIN_LOCAL = .*$~DOMAIN_LOCAL = "'"$ip"'";~' a.txt
DOMAIN_LOCAL = http://127.1.1.2:3000;

当您在 s 替换命令中使用 / 作为分隔符时,它将在 http:// 中的第一个斜杠处终止:

sed 's/DOMAIN_LOCAL = .*$/DOMAIN_LOCAL = http://127.1.1.2:3000;/'
# ^ here

分割:

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

关于bash - 在替换命令 '/' 中获取错误标志以进行 sed 替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37529382/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com