如何从jq中的数组中删除空字符串项?
这是我最好的猜测,但它似乎不起作用:
尝试
echo '["bob","","tim",""]' | jq '[ . [] | if length > 0 then . end ]'
Run Code Online (Sandbox Code Playgroud)
期望的输出:
["bob", "tim"]
Run Code Online (Sandbox Code Playgroud)
错误:
. [] | 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
Run Code Online (Sandbox Code Playgroud)
use*_*693 11
添加"else empty"会得到正确的结果
jq '[ .[] | if length > 0 then . else empty end ]'
Run Code Online (Sandbox Code Playgroud)
考虑使用select代替.
jq '[ .[] | select(length > 0) ]'
Run Code Online (Sandbox Code Playgroud)
由于map(x)相当于[.[] | x],我们可以做到这一点.
jq 'map(select(length > 0))'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2628 次 |
| 最近记录: |