替换多个 JSON 文件中对象属性的值

时间:2021-02-09 14:14:28

标签: json powershell file jq

我正在处理位于同一文件夹中的多个 JSON 文件。

文件包含具有相同属性的对象,例如:

{  
    "identifier": "cameraA",
    "alias": "a",
    "rtsp": "192.168.1.1"
}

我想在特定条件下同时替换 JSON 文件中所有对象的属性。

例如,假设我想替换标识符等于“cameraA”的对象的所有 rtsp 值。

我一直在尝试类似的东西:

 jq 'if .identifier == \"cameraA" then .rtsp=\"cameraX" else . end' -c *.json

但它不起作用。

有没有一种简单的方法可以在多个 JSON 文件中替换一个对象的属性?

1 个答案:

答案 0 :(得分:0)

jq 只能写入 STDIN 和 STDOUT,因此最简单的方法是一次处理一个文件,例如将您的 jq 程序放入 shell 循环中。 在采用这种方法时经常使用。

但是,有一种替代方案具有效率优势。它只需要调用一次 jq,其输出将包括文件名信息(从 input_filename 获得)。该输出然后将是辅助过程的输入,例如awk

相关问题