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命令使其工作/?
您$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)