2016-01-28 27 views
0

我有一个这样的文件:sed命令在多个行正则表达式和JSON文件替换元素

test.json

{.. 
} 
    "Naveen": { 
    "ip_addr": "INET;192.168.1.3;5001", 
    "enable": 1, 
    "mode": "emulate" 
    }, 

我需要正则表达式匹配Naveen,然后下一个元素mode和变化模式值从emulatexyz

失败的解决方案:

  1. sed '/^Naveen$/{$!{N;s/^Naveen\nemulate$/xyz\nBe/;ty;P;D;:y}}'
  2. cat test.json | tr '\n' '\r' | sed -e 's/Naveen\remulate/xyz\rBe/' | tr '\r' '\n'

什么我做了错误?

回答

0

你可以试试这个sed

sed '/"Naveen": {/{:loop; N; s/emulate/CHANGED/g; /}/b; b loop;}' yourfile.json 
+0

非常感谢它的工作:) – Naveen

0

这可能为你工作(GNU SED):

sed '/"Naveen": {/,/},/{/mode/s/emulate/xyz/}' file 

使用{...}之间的范围,然后专注于特定的字符串。

+0

它工作得很好。现在我可以解析json文件并在旅途中进行编辑。 – Naveen