【发布时间】:2021-08-11 07:45:57
【问题描述】:
我在搞乱 jq 并打开 json 文件。
我正在开发一个小型解析器。 到目前为止,我已经使用(用于测试目的)一个 api,从中我得到了 JSON(通过 curl -s)。
curl -s 'https://api.npoint.io/c..fc22' > whitelist_tmp.json
whitelist="cat whitelist_tmp.json"
现在我想从我的脚本所在的本地目录导入完全相同的 JSON,但我相信我犯了一个错误。 我创建了一个名为 whitelist.json 的新文件,位于同一文件夹中。
jq -s . whitelist.json > whitelist_tmp.json
whitelist="cat whitelist_tmp.json"
#Parser part
ruleId=($($whitelist | jq -r '.[].ruleId'))
alert=($($whitelist | jq -r '.[].alertName'))
【问题讨论】:
-
@Shawn 有趣的是白名单的内容是正确的。 json在那里。问题是接下来的JQ命令有些麻烦:annot index array with string "ruleId"
-
如果至少对其中包含的内容有一个模糊的概念,我们就无法告诉您什么是正确的。该错误表示您没有具有该名称的元素,但我们不知道您有哪些元素,或者它们的结构,或者您期望从这些查询中得到什么样的输出。
-
您现在在几个问题中重复了反模式
whitelist="cat whitelist_tmp.json"。您真的不想将命令存储在变量中。答案here 显示了正确的惯用方式。
标签: json bash shell parsing jq