如何将 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一起安装时初始化折叠在哪里?
标准安装不包含 .jq 文件或 .jq 目录。
有一些很好的理由不使用 ~/.jq 作为文件,但暂时搁置这些,如果你想使用 ~/.jq 作为启动文件,只需创造它。您可能需要检查(或更改)HOME 环境变量。也就是说,jq 看哪里的想法取决于 HOME。您可能会发现需要设置或重置环境变量 HOME。
不使用 ~/.jq 作为启动文件的主要原因是如果 ~/.jq 是一个目录,jq 的模块系统会注意到这一点。因此,您可能只想使用模块系统,尽管这样做的缺点是您需要在脚本中包含 include MODULE;
或 import MODULE as _;
指令。
您应该考虑升级到 jq 1.6。如果 choco 无法做到这一点,您可以从 Appveyor 获取相关的 jq.exe——参见 https://github.com/stedolan/jq/wiki/Installation#windows-using-appveyor
我认为这里有改进的余地 -- 考虑到这一点,您可能希望在 https://github.com/stedolan/jq/issues/1955 重新调整您的问题。
我一直在使用 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一起安装时初始化折叠在哪里?
标准安装不包含 .jq 文件或 .jq 目录。
有一些很好的理由不使用 ~/.jq 作为文件,但暂时搁置这些,如果你想使用 ~/.jq 作为启动文件,只需创造它。您可能需要检查(或更改)HOME 环境变量。也就是说,jq 看哪里的想法取决于 HOME。您可能会发现需要设置或重置环境变量 HOME。
不使用 ~/.jq 作为启动文件的主要原因是如果 ~/.jq 是一个目录,jq 的模块系统会注意到这一点。因此,您可能只想使用模块系统,尽管这样做的缺点是您需要在脚本中包含
include MODULE;
或import MODULE as _;
指令。您应该考虑升级到 jq 1.6。如果 choco 无法做到这一点,您可以从 Appveyor 获取相关的 jq.exe——参见 https://github.com/stedolan/jq/wiki/Installation#windows-using-appveyor
我认为这里有改进的余地 -- 考虑到这一点,您可能希望在 https://github.com/stedolan/jq/issues/1955 重新调整您的问题。