我有一个这样的文件:
test.json
:
{..
}
"Naveen": {
"ip_addr": "INET;192.168.1.3;5001",
"enable": 1,
"mode": "emulate"
},
我需要匹配Naveen
,然后是下一个元素mode
,并将模式值从emulate
更改为xyz
。
解决方案失败:
sed '/^Naveen$/{$!{N;s/^Naveen\nemulate$/xyz\nBe/;ty;P;D;:y}}'
cat test.json | tr '\n' '\r' | sed -e 's/Naveen\remulate/xyz\rBe/' | tr '\r' '\n'
我犯的错是什么?
答案 0 :(得分:0)
您可以尝试此sed
,
sed '/"Naveen": {/{:loop; N; s/emulate/CHANGED/g; /}/b; b loop;}' yourfile.json
答案 1 :(得分:0)
这可能适合你(GNU sed):
sed '/"Naveen": {/,/},/{/mode/s/emulate/xyz/}' file
使用{...}
之间的范围,然后专注于特定的字符串。