我在sed中指定了“{”和“}”之间的地址空间,因此我希望只有第一个“Acer”被替换为“TTTT”。不需要第二个。我怎样才能解决这个问题?
我在Ubuntu 15.10上做了测试,sed版本是sed(gnused)4.2.2。
提前谢谢。
$ echo "
[
{
\"manufacturer\": \"Acer\",
\"regularPrice\": 165.99,
},
[
\"manufacturer\": \"Acer\",
\"regularPrice\": 165.99,
],
{
\"manufacturer\": \"Acer\",
\"regularPrice\": 165.99,
}
]
" | sed "/{/,/},/ {s/\"Acer\"/\"TTTT\"/}"
其结果如下:
[
{
"manufacturer": "TTTT",
"regularPrice": 165.99,
},
[
"manufacturer": "Acer",
"regularPrice": 165.99,
],
{
"manufacturer": "TTTT",
"regularPrice": 165.99,
}
]
最佳答案
这只适用于GNU sed
sed "/{/,/},/ {0,/\"Acer\"/ s/\"Acer\"/\"TTTT\"/}"
或者更准确地说,下面的方法也在起作用
sed "/{/,/},/ {0,/\"Acer\"/s//\"TTTT\"/}"