如何从jq中的数组中删除空字符串项?
这是我最好的猜测,但它似乎不起作用:
尝试
echo '["bob","","tim",""]' | jq '[ . [] | if length > 0 then . end ]'
期望的输出:
["bob", "tim"]
错误:
. [] | if length > 0 then . end
jq: error: Possibly unterminated 'if' statement at <top-level>, line 1:
. [] | if length > 0 then . end
jq: 2 compile errors
答案 0 :(得分:9)
添加&#34;否则为空&#34;得到正确的结果
jq '[ .[] | if length > 0 then . else empty end ]'
考虑改用select。
jq '[ .[] | select(length > 0) ]'
由于map(x)等同于[.[] | x]
,我们可以这样做。
jq 'map(select(length > 0))'