SHELL - SED替换"之间的文字"

时间:2015-03-18 12:40:00

标签: regex shell sed

我是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"

感谢您的帮助!

中号

3 个答案:

答案 0 :(得分:1)

问题在于单引号,这会阻止变量$ TCPPort在这种情况下被扩展为" 44444"。

以下代码应该可以使用

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

答案 1 :(得分:0)

====编辑====注释中的正确语法应为:

TCPPort="44444"

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

这会奏效。谢谢!

答案 2 :(得分:0)

使用双引号而不是单引号并转义内部双引号:

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

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