使用sed / awk修改巨大的JSON文件

时间:2016-06-13 07:07:42

标签: json regex awk sed

我有一个像这样的JSON文件,我想使用sed / awk来替换某些键并添加新的键,例如,我不能使用像jq这样的json解析器,因为这需要安装过程并且产品环境有限

输入:

[{
    "key1": "value1",
    "key2": "23456734",
    "nestedKey1": {
        "234567890": {
            "key2": "value3",
            "key4": "value4"
        }
    }
}]

输出:

[{
    "key2": "value1:23456734",
    "nestedKey1": {
        "CONSTANT:234567890": {
            "key4": "value4"
        }
    }
}]

1 个答案:

答案 0 :(得分:3)

sed不是正确的工具。

也就是说,以下命令将与您的示例文件一起使用(在生产环境中使用风险自负):

sed '
/ *"key1"/ {
  N
  s/ *"key1": "\([^"]*\)",\n\( *"key2": \)"\([0-9]*\)"/\2"\1:\3"/
}
/"nestedKey1": {/ {
  N
  s/"\([0-9]*"\)/ "CONSTANT:\1/
  n
  /key2/d
}
' file