【发布时间】:2016-07-20 19:48:34
【问题描述】:
我在 sed 中指定了“{”和“}”之间的地址空间,所以我希望只有第一个“Acer”被替换为“TTTT”。预计不会出现第二个。我该如何解决这个问题? 我在 Ubuntu 15.10 上进行了测试,sed 版本是 sed (GNU sed) 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,
}
]
【问题讨论】:
-
地址中的第二个模式表示“找到时停止”。这并不意味着“如果没有找到就不要继续”。