如何从awk结果中replacestring?

我有一个包含多个replaceme的JSON文件。

我只想根据在上面几行find的特定string来replace一个事件。

例如,

 [...] "title" : { "Propertie1" : "xxxx", "Propertie2: "replaceme" } "title2" : { "Propertie1" : "xxxx", "Propertie2: "replaceme" } "title" : { "Propertie1" : "xxxx", "Propertie2: "replaceme" } "title2" : { "Propertie1" : "xxxx", "Propertie2: "replaceme" } [...] 

在这个例子中,我只想replaceme title2

awk 'title2/,/replaceme/' myFile我可以find我的JSON文件的一部分。 我是否也需要执行一个sed命令,但我不知道如何,或者甚至可能这样?

 [vagrant@localhost ~]$ sed -e '/"title2/,/}/{ s/replaceme/title2/; }' test "title" : { "Propertie1" : "xxxx", "Propertie2: "replaceme" } "title2" : { "Propertie1" : "xxxx", "Propertie2: "title2" } "title" : { "Propertie1" : "xxxx", "Propertie2: "replaceme" } "title2" : { "Propertie1" : "xxxx", "Propertie2: "title2" } 

来源

https://stackoverflow.com/questions/268045/multi-line-search-and-replace-tool

http://sed.sourceforge.net/sedfaq4.html#s4.23.3

 4.24. How do I address all the lines between RE1 and RE2, excluding the lines themselves? Normally, to address the lines between two regular expressions, RE1 and RE2, one would do this: '/RE1/,/RE2/{commands;}'. Excluding those lines takes an extra step. To put 2 arrows before each line between RE1 and RE2, except for those lines: sed '1,/RE1/!{ /RE2/,/RE1/!s/^/>>/; }' input.fil The preceding script, though short, may be difficult to follow. It also requires that /RE1/ cannot occur on the first line of the input file. The following script, though it's not a one-liner, is easier to read and it permits /RE1/ to appear on the first line: # sed script to replace all lines between /RE1/ and /RE2/, # without matching /RE1/ or /RE2/ /RE1/,/RE2/{ /RE1/b /RE2/b s/^/>>/ } #---end of script--- Contents of input.fil: Output of sed script: aaa aaa bbb bbb RE1 RE1 aaa >>aaa bbb >>bbb ccc >>ccc RE2 RE2 end end