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

jq使用-L参数执行外部脚本无法获取对应键值对如何解决

问题原因

-L是jq的模块搜索路径指定参数,不是用于直接加载过滤器文本文件的参数。你当前执行命令时并没有调用到json2csv中定义的过滤器,jq默认返回完整输入内容,因此输出了全部JSON结构。

两种解决方式

方式1:无需修改json2csv文件,调整执行参数(更简便)

你当前json2csv里的.["a"]过滤器本身是正确的,只要把调用参数从-L换成-f即可,-f才是指定加载过滤器文件的参数:

cat sample2.json | jq -f json2csv

执行后会直接输出预期的86,注意匹配你实际的JSON文件名(你示例中文件名为sample2.json,原命令写的sample.json属于笔误)。

方式2:修改json2csv文件适配-L模块加载模式

如果你需要使用-L的模块管理机制,按以下步骤调整:

  • 先将json2csv文件重命名为json2csv.jq(jq模块要求后缀为.jq)
  • 修改json2csv.jq内容,将过滤器封装为可导出的模块函数:
def get_a: .["a"];
  • 执行命令时导入模块并调用对应函数,-L后面跟模块文件所在的目录(此处示例为当前目录.):
cat sample2.json | jq -L . 'import "json2csv" as m; m::get_a'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 16:09:02