gpt4 book ai didi

json - jq 忽略 else 子句

转载 作者:行者123 更新时间:2023-12-05 02:43:18 26 4
gpt4 key购买 nike

我想使用 jq 在基于 json 行的数据中搜索和替换特定值,如果匹配为假,则保持对象不变。

考虑以下 input.json:

{"foo":{"bar":"one"}}
{"foo":{"bar":"two"}}

我尝试了下面的语句,但是 else 子句被忽略了,因此不匹配的行会丢失:

jq -c '. | if (select(.foo.bar == "one")) then .foo.bar |= "ok" else . end' input.json

产生结果:

{"foo":{"bar":"ok"}}

以下命令产生正确的输出:

jq -c '(. | select(.foo.bar == "one")).foo.bar = "ok"' input.json

期望的输出:

{"foo":{"bar":"ok"}}
{"foo":{"bar":"two"}}

为什么第一个命令在else子句中输出对象.失败?

最佳答案

不要使用select:

. | if .foo.bar == "one" then .foo.bar |= "ok" else . end

select 可用于过滤,但如果没有任何内容可供选择,它不会返回假值,它不会返回任何内容。

关于json - jq 忽略 else 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66992079/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com