SHELL - SED 替换“”之间的文本

SHELL - SED replacing text between " "

我是 shell 和 SED 的新手。我正在尝试替换文件中的文本。此文本介于“”之间,我正在努力创建命令...

文件内容如下: download_amule_tcp_port="42450"

我的代码:

TCPPort=44444

sed -i 's/^download_amule_tcp_port=\".*/download_amule_tcp_port=\"$TCPPort\"/' settings.conf

它不起作用...

download_amule_tcp_port=$TCPPort"

感谢您的帮助!

==== 编辑 ==== 评论中的正确语法应该是:

TCPPort="44444"

sed -i "s/^download_amule_tcp_port=.*/download_amule_tcp_port=\"$TCPPo
rt\"/" settings.conf

这行得通。谢谢!

问题出在单引号上,它阻止变量 $TCPPort 在本例中扩展为“44444”。

下面的代码应该可以工作

TCPPort="44444"
sed -i 's/^download_amule_tcp_port=".*/download_amule_tcp_port="'"$TCPPort"'"/g' settings.conf

使用双引号代替单引号并转义内部双引号:

sed -i "s/^download_amule_tcp_port=\".*/download_amule_tcp_port=\"$TCPPORT\"/" settings.conf

顺便说一句,您设置变量 TCPPort 而不是 TCPPORT