使用jq如何改变一个键的值?我正在尝试根据键的长度更改键的值。但它似乎并不像预期的那样工作。
echo '[{"kiwi": 3 }, {"apple" : 4} ]' | jq 'map(with_entries(.key |= "\(.)", .value |= (. | length)))'
字符串
实际输出:
[
{
"kiwi": 3
},
{
"apple": 4
}
]
型
期望输出-
[
{
"kiwi": 4
},
{
"apple": 5
}
]
型
2条答案
按热度按时间p1tboqfb1#
在
with_entries
中,您只需要使用=
将计算值(.key | length
)分配给.value
。.key
的值保持不变。个字符
Demo
rqcrx0a62#
你要的
字符串
解释如下。
型
大致相当于
型
所以你实际上是在做
3 | length
和4 | length
。当给定一个数字时,length
产生该数字。所以它们分别产生3
和4
。你需要 key 的长度。
型
同样地,
型
可以看作是
型
因为键已经是字符串了
型
而这一点作用都没有。