Linux 使用sed命令更新配置文件的键值时出现问题
使用下面的bash脚本更新配置文件的键值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
#!/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