2016-05-30 74 views
2

我在使用我的sed命令替换面临的一个问题。我有一个名为a.txt文件,我想与其他一些线路来取代单一的线,但我得到上面提到的错误。获取坏标志替代命令“/”对于SED替代

代码我想替换:

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: '/' 

回答

5

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

% 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 ubstitute命令分隔符将在第一个斜杠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 
+0

我想用双引号的东西像'DOMAIN_LOCAL =“http://127.1.1.2:3000”;' – DisplayName

+0

@DisplayName请参阅编辑... – andlrc

+0

基本上发生了什么是每当我使用'/'作为分隔符,只要找到正斜杠就会停止替换。这是对的吗? – DisplayName

1

您可能需要另一个分隔符,而不是"/",为examp le "%"。它为我工作。

+0

这个答案可以通过一个例子来改进;我发现这个例子很有用...所有的“/”必须被替换...在链接例子中是“?” http://stackoverflow.com/a/1186199/5283424 –