【发布时间】:2021-09-23 12:39:32
【问题描述】:
{
"a": "jdsdjhsandks"
}
如何使用 JQ 表达式计算 a 字段的模块化哈希?
【问题讨论】:
-
使用 jq 的 C 实现“脱壳”的前景充其量是遥不可及的;但 gojq 正在积极维护中 - 您可能想加入 github.com/itchyny/gojq/issues/101
标签: jq
{
"a": "jdsdjhsandks"
}
如何使用 JQ 表达式计算 a 字段的模块化哈希?
【问题讨论】:
标签: jq
jq 没有实现哈希函数,您必须导出数据,应用外部工具并重新导入哈希。
例如,如果您的 JSON 位于名为 input.json 的文件中,并且您使用 bash 调用 jq,您可以这样做:
# Export the data
data="$(jq -r '.a' input.json)"
# Apply an external tool
md5sum="$(printf '%.32s' "$(md5sum <<< "${data}")")"
# Re-import the hash
jq --arg md5sum "${md5sum}" '.a_md5 = $md5sum' input.json
或者不使用变量
jq --arg md5sum "$(
printf '%.32s' "$(
md5sum <<< "$(
jq -r '.a' input.json
)"
)"
)" '.a_md5 = $md5sum' input.json
【讨论】:
md5sum 打印哈希值,后跟文件名(或者在这种情况下,- 用于标准输入)。 printf '%.32s' 只提取前 32 个字符,甚至没有换行符。
md5(如果有的话)更明智......