【问题标题】:Filter elements of a JSON by their subelements' contents in Windows shell using JQ?使用 JQ 在 Windows shell 中通过子元素的内容过滤 JSON 的元素?
【发布时间】:2019-05-30 07:46:18
【问题描述】:

这可能在其他地方被问到,但我找不到类似的案例:

尝试根据中继是否“正在运行”以及是否具有“快速”标志来过滤 Tor 网络的中继共识 (https://onionoo.torproject.org/details),以便生成另一个由所选中继组成的 json。甚至可能是更简洁的版本,仅列出每个中继的某些元素(昵称、指纹等)。

我正在尝试在批处理脚本中使用它,这使得 JQ 难以使用,因为它需要跳过箍才能使其与 Windows 的 shell 一起使用。

浏览教程和手册,我被难住了。有人知道解决方案吗?

【问题讨论】:

  • 详细说明你需要从这个 JSON 数据中得到什么,包括具体的例子和你到目前为止所做的尝试。
  • 请尽可能遵循minimal reproducible example 准则。可以参考整个感兴趣的文件,但在此页面上查看最小但完整的示例会很有帮助(对于潜在的响应者和未来的读者)。

标签: batch-file cmd jq tor


【解决方案1】:

此过滤器将选择带有 RunningFast 标志的继电器,并生成仅包含 nicknamefingerprint 字段的对象数组,对其进行调整以满足您的要求。

.relays | map(select(.flags | index("Running") and index("Fast")) | { nickname, fingerprint })

【讨论】:

  • 我想多了解一下语法和命令...在这个例子中,select(.flags | ...) 是如何工作的?
  • @cal select 定义为if filter then . else empty end(参见builtin.jq),因此当filter 评估为真时,它允许传入元素通过。在这种情况下,它会检查其输入的flags 字段是否包含字符串RunningFast
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-23
  • 2016-11-12
  • 2014-12-12
相关资源
最近更新 更多