用jq从数组中删除空字符串?

时间:2017-05-31 15:18:06

标签: arrays json jq

如何从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

1 个答案:

答案 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))'