linux - xargs + curl “写入正文失败”(不能将多个结果保存到文件中)
问题描述
我对 xargs 和 curl 有疑问。
我在“urls”文件中有 url 列表,我需要下载限制在前 9 行的这些内容并将所有内容保存到一个输出文件(或每个结果一个文件 - 没关系)。
xargs -P 4 -n 1 curl < urls | head -n 9 > outputfile
问题是,只有第一个结果是保存到文件,所有其他结果都给出错误“(23)写入正文失败”。即使我不将结果保存到文件中,控制台中也会出现“(23) 写入正文失败”错误。
总之:我需要从文件中下载前 9 行 XXXX URL,并将其保存到一个输出文件,或者每个 URL 一个文件。
Cygwin (Windows 10) 和 MacOs 上存在问题。
解决方案
您的管道将输出限制为前 9 行xargs
输出。试试这个。
xargs -P 4 -i sh -c 'curl {} | head -n 9' <urls >outputfile
这可能会无法控制地混淆并行提取的输出线。如果你想避免这种情况,也许看看 GNU parallel
。如果这是不可接受的,则可以将每个文件写入一个单独的临时文件,并在提取完成后连接并删除临时文件。
推荐阅读
- javascript - 如何找到一种过滤数组与另一个数组比较的方法
- java - Java String...关于方法的多个输入的问题
- amazon-web-services - Velocity Apache 访问地图中不存在的元素
- python - 尝试运行 --help 命令时出现 -bash 错误
- html - 使用 Ajax 在 Nodejs Express 项目中提交失败后无法保存表单输入
- json - 从 terraform 中的嵌套 json 中提取值
- python - 递归枚举JSON层次结构父/子到字典
- textures - Meshlab 选择替代纹理
- firebase - axios firebase 刷新令牌授权标头未覆盖
- flutter - Flutter - 与脚手架堆栈