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



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

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

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

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

例如,假设我想将对象的所有rtsp值替换为标识符为" camera"

我一直在尝试这样做:

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

但是它不工作。

是否有一个简单的方法来替换多个JSON文件中的对象的属性?

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

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

最新更新