我有以下形式的JSON对象:
{
"Task11c-0-20181209-12:59:30-65611" : {
"attributes" : {
"configname" : "Task11c",
"datetime" : "20181209-12:59:30",
"experiment" : "Task11c",
"inifile" : "lab1.ini",
"iterationvars" : "",
"iterationvarsf" : "",
"measurement" : "",
"network" : "Manhattan1_1C",
"processid" : "65611",
"repetition" : "0",
"replication" : "#0",
"resultdir" : "results",
"runnumber" : "0",
"seedset" : "0"
},
......
},
......
"Task11b-12-20181209-13:03:17-65612" : {
....
....
},
.......
}
我只报告了第一部分,但总的来说,我还有许多其他子对象,它们与诸如Task11c-0-20181209-12:59:30-65611
之类的字符串相匹配。它们都有一个共同的首字母Task
。我想从每个子对象中提取processid
。我正尝试在bash中使用通配符,但似乎不可能。
我也了解了match()函数,但是它适用于字符串而不是json对象。
感谢支持。
答案 0 :(得分:4)
过滤以Test
开头并使用select()
表达式仅获取您选择的属性的键
jq 'to_entries[] | select(.key|startswith("Task")).value.attributes.processid' json