2013-03-07 88 views
0

我試圖替換以下JSON鍵值對替換JSON文件鍵的值,如何使用SED

"$$RESULT_REPORTER$$":"HTML", to 
"$$RESULT_REPORTER$$":"XML" 

使用SED。

這裏是sed命令我使用,

sed -i 's/^\(\"\$\$RESULT_REPORTER\$\$\"*:*\).*$/\1\"XML\"/' /path/to/file 

但這個問題是我不能夠保留在最後的逗號和它給我的JSON解析錯誤。 如何在替換字符串後保留逗號?

回答

2

只是逗號添加到更換:

$ sed -i 's/^\(\"\$\$RESULT_REPORTER\$\$\"*:*\).*$/\1\"XML\",/' file 
###             HERE ---^ 

編輯

$ cat file 
"$$RESULT_REPORTER$$":"HTML", 
"$$RESULT_REPORTER$$":"HTML" 

$ sed 's/^\("$\$RESULT_REPORTER\$\$":"\)[^"]*/\1XML/' file 
"$$RESULT_REPORTER$$":"XML", 
"$$RESULT_REPORTER$$":"XML" 
+0

如果什麼JSON字符串犯規包含 '逗號',在結束了嗎? – bram 2013-03-07 13:50:59

+0

@indiws請參閱編輯。 – 2013-03-07 14:00:27

+0

感謝回覆@sudo_O。但它似乎不起作用,# '#cat test' '「$$ RESULT_REPORTER $$」:「HTML」 \「*:* \)[^」] \(「,?\)$/\ 1XML \ 2 /'test' '」$$ RESULT_REPORTER $$「:」HTML「,」 – bram 2013-03-07 14:04:49