Sed错误"sed:unmatched'/'"

MOH*_*MED 2 linux bash shell sed

我有一个包含以下格式的数据的文件:

{"parameter":"toto.tata.titi", "value":"0/2", "notif":"1"}
Run Code Online (Sandbox Code Playgroud)

我使用sed对文件进行了更改:

sed -i "/\<$param\>/s/.*/$line/" myfile
Run Code Online (Sandbox Code Playgroud)

哪个line变量是

{"parameter":"toto.tata.titi", "value":"0/2", "notif":"3"}
Run Code Online (Sandbox Code Playgroud)

param变量是toto.tata.titi

以上sed命令返回错误:

sed: unmatched '/'
Run Code Online (Sandbox Code Playgroud)

因为line变量包含/==>"0/2"

即使line变量包含,如何更新我的sed命令使其工作/

kon*_*box 7

$param$line可能包含/导致sed语法错误.考虑使用其他分隔符,如|@.

例:

sed -i "/\<$param\>/s|.*|$line|" myfile
Run Code Online (Sandbox Code Playgroud)

但这可能还不够.您还可以在扩展时引用斜杠:

sed -i "/\<${param//\//\\/}\>/s|.*|$line|" myfile
Run Code Online (Sandbox Code Playgroud)

其他更安全的角色也可以使用:

d=$'\xFF'  ## Or d=$(printf '\xFF') which is compatible in many shells.
sed -i "/\<${param//\//\\/}\>/s${d}.*${d}${line}${d}" myfile
Run Code Online (Sandbox Code Playgroud)