我正在寻找一种解决方案,我正在构建 JSON 记录,并需要在 JQ 中生成一些文本,但将此文本通过管道传输到 MD5 求和函数并将其用作键的值。
echo '{"first": "John", "last": "Big"}' | jq '. | { id: (.first + .last) | md5 }'
通过查看手册和 GH 问题,我无法弄清楚如何执行此操作,因为函数无法调用 shell,并且没有内置提供类似哈希的功能。
Edit
我正在寻找的一个更好的例子是:
echo '{"first": "John", "last": "Big"}' | jq '. | {first, last, id: (.first + .last | md5) }'
输出:
{
"first": "John",
"last": "Big",
"id": "cda5c2dd89a0ab28a598a6b22e5b88ce"
}
Edit2
以及更多背景信息。我正在创造NDJson http://ndjson.org/与 esbulk 一起使用的文件。我需要为每条记录生成一个唯一的密钥。最初,我认为通过管道传输到 shell 将是最简单的解决方案,因此我可以轻松使用 sha1sum 或其他一些哈希函数,但这看起来比我想象的更具挑战性。
我正在寻找的一个更好的例子是:
echo '[{"first": "John", "last": "Big"}, {"first": "Justin", "last": "Frozen"}]' | jq -c '.[] | {first, last, id: (.first + .last | md5) }'
输出:
{"first":"John","last":"Big","id":"cda5c2dd89a0ab28a598a6b22e5b88ce"}
{"first":"Justin","last":"Frozen","id":"af97f1bd8468e013c432208c32272668"}