我一直在使用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安装巧克力时初始化折叠在哪里?
-
标准安装不包括 .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 考虑到这一点的情况下重新调整你的问题。