我在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)
您将需要使用另一个分隔符.逃避$或使用单引号:
% 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)
| 归档时间: |
|
| 查看次数: |
4884 次 |
| 最近记录: |