awk / Sed:如何替换字符串?

时间:2013-05-20 20:46:06

标签: shell sed awk

给出data.json,例如:

{ "key1":"value1", "key2":"value2", "key3":"value3", "key4":"value4" },
{ "key1":"babla1", "key2":"babla2", "key3":"babla3", "key4":"babla4" },
{ "key1":"tata1", "key2":"tata2", "key3":"tata3", "key4":"tata4" },

如何用其他东西替换字符串"key2":"(.*)", "key3":"(.*)"

2 个答案:

答案 0 :(得分:3)

尝试以下方法:

$ sed 's|"key2":"[^"]*", "key3":"[^"]*"|"keyX":"test"|g' data.json
{ "key1":"value1", "keyX":"test", "key4":"value4" }, { "key1":"babla1", "keyX":"test", "key4":"babla4" }, { "key1":"tata1", "keyX":"test", "key4":"tata4" }

一些注意事项:

  • 因为regexp很贪婪我使用[^"]*代替.*
  • g标记替换所有出现的内容

答案 1 :(得分:0)

sed code:

sed 's/,.*,\s/, \"keyX\":\"testX\", /' file

..输出是:

{ "key1":"value1", "keyX":"testX", "key4":"value4" },
{ "key1":"babla1", "keyX":"testX", "key4":"babla4" },
{ "key1":"tata1", "keyX":"testX", "key4":"tata4" },