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

如何在jq过滤器文件中使用多行代码?

解决jq过滤器文件多行代码与注释的语法错误问题

错误的核心原因是你的filter.jq文件使用了Windows风格的CRLF(\r\n)换行符,在WSL/Cygwin环境中,jq会将行尾的\r字符识别为无效字符,从而抛出语法错误。

解决步骤:

  1. 检查文件换行符格式
    执行以下命令查看文件的换行符:

    cat -A filter.jq
    

    如果行尾显示^M$,说明文件是CRLF格式(Windows风格)。

  2. 转换为Unix风格LF换行符

    • 方法一:使用dos2unix工具转换
      dos2unix filter.jq
      
    • 方法二:用Vim编辑器修改
      打开文件后执行:
      :set ff=unix
      :wq
      
      保存退出即可完成格式转换。
  3. 正确的过滤器文件写法
    转换后,你可以自由拆分代码为多行,也可以添加单行注释(#开头),无需使用反斜杠续行:

    # 提取signal数组中每个元素的name字段
    .signal[] | .name
    # 以下是被注释的备用过滤规则
    # .signal[] | select(.name | contains("signal")) as $matches
    
  4. 验证执行
    再次运行命令即可正常执行:

    cat input.json | jq -rf filter.jq
    

内容的提问来源于stack exchange,提问作者Daniel Kaplan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 01:42:52