使用sed命令替换具有给定模式的行的一部分

时间:2017-07-12 03:01:01

标签: sed

我有一个JSON文件,其中包含以下内容:

{
    "a" : "100"
}

此处"a"之前的空格数可能会有所不同。因此,我想首先检查一行中"a"的出现位置,并将"a"之后的其余行替换为" : "10"",以使文件看起来像这样:

{
    "a" : "10"
}

如何使用sed命令执行此操作?这是我到目前为止所尝试的:

sed -ir 's/.*a.* [0-9][0-9]*/10/g' file.json

2 个答案:

答案 0 :(得分:2)

最好为json使用特殊工具。例如jq

$ jq '.a = "10"' file
{
    "a": "10"
}

答案 1 :(得分:1)

$ sed -ri 's/("a"[ ]*:[ ]*).*/\1"10"/' file
$ cat file
{
    "a" : "10"
}