【发布时间】:2014-11-28 13:36:47
【问题描述】:
我创建了一个 JSON 文件,在这种情况下包含:
{"ipaddr":"10.1.1.2","hostname":"host2","role":"http","status":"active"},
{"ipaddr":"10.1.1.3","hostname":"host3","role":"sql","status":"active"},
{"ipaddr":"10.1.1.4","hostname":"host4","role":"quad","status":"active"},
另一方面,我有一个变量,例如:
arr="10.1.1.2 10.1.1.3"
例如来自对服务器状态的后续检查。对于这些值,我想将状态字段更改为"inactive"。换句话说就是grep主机并改变它的"status"值。
预期输出:
{"ipaddr":"10.1.1.2","hostname":"host2","role":"http","status":"inactive"},
{"ipaddr":"10.1.1.3","hostname":"host3","role":"sql","status":"inactive"},
{"ipaddr":"10.1.1.4","hostname":"host4","role":"quad","status":"active"},
【问题讨论】:
-
考虑使用
jq解析JSON -
你的代码是什么语言的?你的代码在哪里?你遇到了什么问题?
-
我正在使用 awk sed 和 bash 创建 json 文件
-
请注意,根据jsonlint.com,这不是有效的 JSON 格式。这意味着 Perl 和 Python 中的标准模块无法解析它。
-
它是一个实际的应用程序还是只是一个快速解析/查找/替换?如果是后者,那么带有
jq ...或perl -MJSON -E '...;'的oneliner 可能是最简单的。如果是前者,那么有关您要完成的工作的更多详细信息将有助于提供帮助。您是否正在从网页或 JSON 推送服务读取数据以用于其他应用程序?或者您正在构建一个应用程序来显示结果以及维护 JSON 数据中的数据?