Linux 使用sed命令更新配置文件的键值时出现问题

Linux 使用sed命令更新配置文件的键值时出现问题,linux,bash,sed,Linux,Bash,Sed,使用下面的bash脚本更新配置文件的键值 #!/bin/bash ipaddr="192.168.0.1" path="my/binary/file/path/version_op.bin" sed -i "s/\("IP_ADDR" *= *\).*/\1$ipaddr/" config.txt sed -i "s/\("PATH_N_FILENAME" *= *\).*/\1${path}/" config.txt 配置文件(config.txt)内容 上述脚本仅在更新IP\u AD

使用下面的bash脚本更新配置文件的键值

#!/bin/bash

ipaddr="192.168.0.1"
path="my/binary/file/path/version_op.bin"

sed -i "s/\("IP_ADDR" *= *\).*/\1$ipaddr/" config.txt

sed -i "s/\("PATH_N_FILENAME" *= *\).*/\1${path}/" config.txt
配置文件(config.txt)内容

上述脚本仅在更新
IP\u ADDR
时工作正常,但当我为
PATH\N\u FILENAME
启用
sed
时,它会显示以下错误

sed: -e expression #1, char 35: unknown option to `s'
可能是由于路径中的
path
变量包含
/
,使
sed
处于混乱状态而出现此问题。但无论发生什么问题,我仍然找不到它


你知道怎么解决吗?

在sed命令部分使用单引号:

sed -i 's/\("IP_ADDR" *= *\).*/\1$ipaddr/' config.txt

使用不同的分隔符。这是一个常见问题解答。@devnull的可能副本您使用不同的分隔符是对的,它将修复。t尝试如下
sed-i“s |\(“PATH\u N\u FILENAME”*=*\).*\1${PATH}input.txt
并且工作正常…感谢可能的副本
sed -i 's/\("IP_ADDR" *= *\).*/\1$ipaddr/' config.txt