json - 替换多个 JSON 文件中对象属性的值
问题描述
我正在处理位于同一文件夹中的多个 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 文件中替换对象的属性?
解决方案
jq 只能写入 STDIN 和 STDOUT,因此最简单的方法是一次处理一个文件,例如将 jq 程序放在 shell 循环中。 采用这种方法时经常使用海绵。
但是,还有一种具有效率优势的替代方案。它只需要调用一次 jq,其输出将包括文件名信息(从 获取input_filename
)。然后,该输出将成为辅助过程的输入,例如awk
。
推荐阅读
- javascript - 如何在 Google Sheets 中仅将 setValue 用于过滤行的范围(getRange 用于未隐藏的单元格)?
- c# - 从 SSIS 脚本包中调用的 SSRS 报告将文件另存为 PDF 时出错
- ios - IndexedDB 性能随着 IOS 13 上的 objectStore 数量而下降
- lumen - 如何在 Lumen 中生成不会引发 500 错误的组路由?
- python - Python pandas 读取文件错误:ParserError:错误标记数据。C错误:
- twilio - AWS Lambda 失败中的简单 Twilio 测试
- docker - 无法在 Windows 容器中运行 32 位 exe
- java - 使用函数 glGenerateMipmap() 初步创建 mipmap
- python - 读取文件并将列转换为python中的行
- list - 如何将列表中的每两个元素打包到scala中的元组?