我正在处理位于同一文件夹中的多个 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 文件中替换一个对象的属性?
答案 0 :(得分:0)
jq 只能写入 STDIN 和 STDOUT,因此最简单的方法是一次处理一个文件,例如将您的 jq 程序放入 shell 循环中。 sponge 在采用这种方法时经常使用。
但是,有一种替代方案具有效率优势。它只需要调用一次 jq,其输出将包括文件名信息(从 input_filename
获得)。该输出然后将是辅助过程的输入,例如awk
。