turf-cli + xargs:参数行太长

turf-cli + xargs:参数行太长

我在用着草皮-cli(它可以与 一起安装sudo npm install -g turf-cli)用于创建一些地理空间数据。turf-cli是一个包装器turf.js 库这样我们就可以从命令行使用它的功能。假设我有以下脚本:

turf random points 1000 {} > geojsonFile.json
turf sample geojsonFile.json 2 

在此示例中,第一行生成包含 1000 个随机点的 GeoJSON,第二行选择该文件的两个特征。到目前为止一切都很好。

好吧,我不想生成临时文件来存储第一行的数据,也不想将其存储在变量中,以便我可以在第二行中使用它。我发现的解决方法xargs如下:

turf random points 1000 {} | jq -c '' | xargs -0 -I {} turf sample {} 2

这个脚本也运行得很好。基本上,它正在做:

  1. 用于turf在 GeoJSON 输出中生成 1000 个随机点。
  2. 用于jq将 GeoJSON 输出压缩为一行。
  3. 与参数一起使用xargs以便turf第二次执行(因为turf不接受stdin参数)。

到目前为止,在我的示例中,我仅使用 .生成了 1000 个随机点turf。这就是为什么一切都有效。但是,如果我尝试通过执行以下命令将随机点数增加到 10000:

turf random points 10000 {} | jq -c '' | xargs -0 -I {} turf sample {} 2

它返回给我错误:

xargs: argument line too long

我见过类似的xargs问题这个解决方案是使用| xargs -I {} -0 ......但我已经在使用这些参数,但它在我的情况下不起作用。有没有什么方法可以让它工作,xargs这样turf即使它从管道接收到巨大的 GeoJSON,我也可以在其中执行?

相关内容