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



我一直在使用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安装巧克力时初始化折叠在哪里?

  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 考虑到这一点的情况下重新调整你的问题。

最新更新