如何将 Walk/1 添加到 Chocolatey NuGet 在 Windows 10 上安装的 jq 1.5

How to add Walk/1 to jq 1.5 installed by Chocolatey NuGet on Windows 10

我一直在使用 jq 在批处理环境中自动化一些数据处理。我最近 运行 遇到一个用例,我需要递归地将 fromjson 应用于我的 json 数据中的字符串。不幸的是 jq 1.5 本身没有 walk/1 功能,所以我需要添加它。我无法找到添加代码的正确位置。我需要添加这段代码:

def walk(f):
  . as $in
  | if type == "object" then
      reduce keys_unsorted[] as $key
        ( {}; . + { ($key):  ($in[$key] | walk(f)) } ) | f
  elif type == "array" then map( walk(f) ) | f
  else f
  end;

到我的初始化文件,但是找不到。有谁知道jq和chocolatey一起安装时初始化折叠在哪里?

  1. 标准安装不包含 .jq 文件或 .jq 目录。

  2. 有一些很好的理由不使用 ~/.jq 作为文件,但暂时搁置这些,如果你想使用 ~/.jq 作为启动文件,只需创造它。您可能需要检查(或更改)HOME 环境变量。也就是说,jq 看哪里的想法取决于 HOME。您可能会发现需要设置或重置环境变量 HOME。

  3. 不使用 ~/.jq 作为启动文件的主要原因是如果 ~/.jq 是一个目录,jq 的模块系统会注意到这一点。因此,您可能只想使用模块系统,尽管这样做的缺点是您需要在脚本中包含 include MODULE;import MODULE as _; 指令。

  4. 您应该考虑升级到 jq 1.6。如果 choco 无法做到这一点,您可以从 Appveyor 获取相关的 jq.exe——参见 https://github.com/stedolan/jq/wiki/Installation#windows-using-appveyor


我认为这里有改进的余地 -- 考虑到这一点,您可能希望在 https://github.com/stedolan/jq/issues/1955 重新调整您的问题。