Regex SHELL-SED替换“之间的文本”&引用;
我是壳牌公司的新员工,一般来说是SED。我正在尝试替换文件中的文本。此文本介于“”之间,我正在努力创建命令 该文件有如下内容: 下载\u amule\u tcp\u port=“42450” 我的代码:Regex SHELL-SED替换“之间的文本”&引用;,regex,shell,sed,Regex,Shell,Sed,我是壳牌公司的新员工,一般来说是SED。我正在尝试替换文件中的文本。此文本介于“”之间,我正在努力创建命令 该文件有如下内容: 下载\u amule\u tcp\u 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=\"$TCPPort\"/' settings.conf
它不起作用
download_amule_tcp_port=$TCPPort"
谢谢你的帮助
M==编辑===注释中的正确语法应为:
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
变量不在单引号之间展开,请尝试使用双引号。测试echo“$TCPPort”
vsecho“$TCPPort”
谢谢。我对问题进行了编辑以提供正确的语法。可能的重复在引用的文本中是否有换行符?看起来不错,您应该将自己的答案标记为正确的:)