如何使用jq修改键值?基于键长度修改值的异常排查
问题分析与解决
你的jq命令没达到预期有两个核心问题:
- 逻辑错误:你想把值改成键的长度,但原命令里是对原有值取length,而不是对键取length
- 无效操作:原value是数字类型,jq中数字没有
length属性,所以.value |= (. | length)根本不会修改值;另外.key |= "\(.)"是多余的,因为键本来就是字符串,这个操作没有实际作用
正确命令
echo '[{"kiwi": 3 }, {"apple" : 4} ]' | jq 'map(with_entries(.value |= (.key | length)))'
命令解释
map(...):遍历数组中的每个对象with_entries(...):处理对象的每个键值对.value |= (.key | length):将当前键值对的value替换为对应key的字符长度
执行后会得到你期望的输出:
[ { "kiwi": 4 }, { "apple": 5 } ]
内容的提问来源于stack exchange,提问作者CodeBot
相关产品推荐
相关产品推荐

