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

如何用GNU Parallel并行执行curl,生成指定输出文件并过滤结果?

解决GNU Parallel的两个问题:避免多余文件与输出过滤

1. 仅生成任务编号命名的输出文件

--results参数的设计逻辑就是同步生成.err(标准错误输出)和.seq(任务序列信息)文件,要只保留编号命名的输出文件,直接在Parallel执行的命令内部用输出重定向替代--results即可:

  • 先确保输出目录存在(避免写入失败):
    mkdir -p output
    

2. 结合grep实现输出过滤

将curl的输出通过管道传给grep做过滤,再把过滤后的结果写入目标文件。需要将整个命令用引号包裹,确保Shell能正确解析管道和重定向逻辑。

完整命令示例

parallel -j+0 --k --eta 'curl -XGET -I -s --max-time 5 {} | grep -Ev "Server:|Date:|Content" > output/{#}.txt' < mytxt.txt

关键参数说明

  • {}:会被替换为mytxt.txt中的每一行URL
  • {#}:代表当前任务的顺序编号,自动生成1.txt、2.txt这类文件名
  • grep -Ev "Server:|Date:|Content":过滤掉包含Server:、Date:或Content开头的行
  • -j+0:使用与CPU核心数一致的并行任务数,--k保持任务输出顺序与输入URL顺序一致,--eta实时显示任务完成进度

如果需要忽略curl的错误输出(比如连接失败的提示),可以在curl命令后追加2>/dev/null:

parallel -j+0 --k --eta 'curl -XGET -I -s --max-time 5 {} 2>/dev/null | grep -Ev "Server:|Date:|Content" > output/{#}.txt' < mytxt.txt

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 10:35:00