我正在尝试设置一些监视。作为其中的一部分,我需要解析一些粗糙的json输出以检索节点ID,节点ID每次重新启动或服务重新启动时都会更改。我总是知道节点名称,但不知道“ id” 。 JSON看起来像这样:
data.output <-read_table2("user.id problem.id first.correct cwa_prob prob.seq post.cwa.correct
540995 PRABNBZQ 0 1 problem.id.problem.1 NA
540995 PRABNBZ2 1 0 problem.id.problem.2 1
540995 PRABNBZK 0 1 problem.id.problem.3 NA
540995 PRABNB2B 0 1 problem.id.problem.4 0
540995 PRABNBWE 0 1 problem.id.problem.5 0
565662 PRABNB2B 1 0 problem.id.problem.1 1
565662 PRABNBZQ 1 1 problem.id.problem.2 NA
565662 PRABNBZ9 1 0 problem.id.problem.3 1
565662 PRABNBZV 1 0 problem.id.problem.4 NA
565662 PRABNBWG 1 0 problem.id.problem.5 NA
")
做{
"cluster_name":"cluster1",
"nodes":
{
"generatednodeid1":{"name":"node01"},
"generatednodeid2":{"name":"node2"}
}
}
给了我 [“ generatednodeid1”,“ generatednodeid2”] 。
我尝试过.nodes | keys
,但只输出 {“ name”:“ node2”}
我真正需要做的是,如果.nodes[] | select(.name=="node2")
给了我 generatenodeid2
我一直在撞墙。我无法为自己的生活弄清楚我的缺失。这似乎很简单(可能是,而且我已经看了太久了)。有什么想法吗?
答案 0 :(得分:0)
有什么想法吗?
在这种情况下,“ to_entries”系列过滤器会很有帮助,例如:
.nodes
| to_entries[]
| select(.value.name == "node2")
| .key