You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何jq中简单的列表转JSON数组操作无法生效?

解决文本列表转JSON数组的jq用法问题

为什么之前的操作失败?

  • 使用-R选项时,jq会逐行处理输入,每一行文本都会被当作独立的字符串传入过滤表达式:
    • [.]:对每一行单独生成一个单元素数组,所以输出多个独立数组,而非合并成一个整体数组。
    • .[]:试图对单个字符串执行数组迭代操作,但字符串不属于可迭代的数组/对象类型,因此触发报错。

简洁的正确实现方式

如果你不想用inputs函数,最简洁的写法可以优化你找到的方法,或者用更紧凑的形式:

cat list | jq -sR '[split("\n")[] | select(length > 0)]'

或者省略cat直接让jq读取文件(更符合命令行简洁原则):

jq -sR 'split("\n") | map(select(length>0))' list

参数说明:

  • -s(--slurp):把所有输入行合并成一个单一字符串(行之间保留换行符),替代默认的逐行处理逻辑。
  • split("\n"):将合并后的字符串按换行符分割为数组,此时可能包含空字符串(若文件末尾存在换行)。
  • map(select(length>0)):过滤掉数组中的空字符串,得到仅包含有效内容的JSON数组。

最终输出效果

执行后会生成你期望的格式:

[
    "me",
    "you",
    "them"
]

内容的提问来源于stack exchange,提问作者Nelson Teixeira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 10:16:18