Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 使用sed替换_Linux_Shell_Sed_Redhat - Fatal编程技术网

Linux 使用sed替换

Linux 使用sed替换,linux,shell,sed,redhat,Linux,Shell,Sed,Redhat,我想动态地替换IP,但有些人将单词$IP替换为实际值 IP=10.50.33.44 PORT=5774 sed -i~ 's/https:\/\/10.11.12.13:8443/https:\/\/$IP:$PORT/g' abc.txt 您能帮我获取正确的值吗?对于变量展开,请使用双引号“: sed -i~ "s/https:\/\/10.11.12.13:8443/https:\/\/$IP:$PORT/g" abc.txt 如前所述,使用不同的分隔符。例如 sed -i~

我想动态地替换IP,但有些人将单词$IP替换为实际值

 IP=10.50.33.44
 PORT=5774
 sed -i~ 's/https:\/\/10.11.12.13:8443/https:\/\/$IP:$PORT/g' abc.txt
您能帮我获取正确的值吗?

对于变量展开,请使用双引号

 sed -i~ "s/https:\/\/10.11.12.13:8443/https:\/\/$IP:$PORT/g" abc.txt
如前所述,使用不同的分隔符。例如

 sed -i~ "s;https://10.11.12.13:8443;https://$IP:$PORT;g" abc.txt

主题的变化:我总是用单引号括住sed/awk/perl…命令,因为shell有时会在使用双引号时绊倒您。 我发现最好是双重引用变量:

sed -i~ 's/https:\/\/10.11.12.13:8443/https:\/\/'"$IP"':'"$PORT"'/g' abc.txt

作为一个“腰带和支架”,以及我通常在bash的命令行中以交互方式编写命令,键绑定M-C-e(在大多数键盘上是Alt-Control-e)将在命令发送之前插入命令。让您直观地看到命令真正得到了什么。

一个小提示:如果您不想转义
/
字符,可以使用类似
s%%%
的内容。
/
%
字符当然可以是模式或替换中找不到的其他字符。