【发布时间】:2021-02-23 08:40:27
【问题描述】:
我使用 Jq 对大型 json 文件执行一些过滤:
paths=$(jq '.paths | to_entries | map(select(.value[].tags | index("Filter"))) | from_entries' input.json)
并使用 :
将结果写入新文件jq --argjson prefix "$paths" '.paths=$prefix' input.json > output.json
但是这个 ^ 失败了,因为 $paths 的行数非常高(大约 100,000 行)。
错误:
jq: Argument list too long
我也经历过:/usr/bin/jq: Argument list too long error bash,在那里理解同样的问题,但没有得到解决方案。
【问题讨论】:
-
明确一点,当命令行包含太多字节时,“参数列表太长”是一个 shell(或真正的操作系统)错误。解决方案通常是使用命令行以外的其他方式在进程之间移动数据,或者在理想情况下避免在进程之间移动所有数据。
标签: shell command-line-arguments jq