我是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"
感谢您的帮助!
中号
答案 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
。