curl批量请求链接时如何结构化归类响应并过滤指定关键词结果
批量curl请求结构化输出+关键词过滤方案
不要直接使用curl -K file.txt > 结果文件的方式存储响应,这种方式没有请求边界标记,事后拆分混杂内容的成本很高,直接逐URL单独发起请求、边处理边写入是最稳妥的方式,全程不需要改动你现有的url配置文件。
操作步骤
- 先确认你的
file.txt配置格式,所有待请求的URL均以url="xxx"或者url=xxx的形式逐行书写即可,不需要调整现有配置。 - 新建名为
batch_curl.sh的shell脚本,写入以下内容:
#!/bin/bash # 自定义配置项 TARGET_KEYWORD="helloworld" # 替换为你需要匹配的关键词 CURL_CONF_PATH="file.txt" # 你的curl配置文件路径 FINAL_OUTPUT="result.md" # 最终结果保存路径 # 初始化结果文件 > "$FINAL_OUTPUT" # 逐行提取配置文件中的所有请求URL grep '^url=' "$CURL_CONF_PATH" | cut -d '=' -f 2- | tr -d '"' | while read -r current_url; do # 发起请求获取当前URL的完整响应,静默模式不输出进度 response=$(curl -s "$current_url") # 校验响应内容是否包含目标关键词 if echo "$response" | grep -qF "$TARGET_KEYWORD"; then # 按结构化格式写入结果 echo "## 请求地址:$current_url" >> "$FINAL_OUTPUT" echo "" >> "$FINAL_OUTPUT" echo "### 响应内容" >> "$FINAL_OUTPUT" echo '```html' >> "$FINAL_OUTPUT" echo "$response" >> "$FINAL_OUTPUT" echo '```' >> "$FINAL_OUTPUT" echo -e "\n---\n" >> "$FINAL_OUTPUT" fi done
- 注意:如果你的
file.txt中URL配置行不是以url=开头,调整脚本里grep的匹配规则适配你的实际配置格式即可。 - 给脚本添加执行权限后直接运行即可:
chmod +x batch_curl.sh ./batch_curl.sh
效果说明
- 最终输出的
result.md为标准Markdown格式,每个URL对应独立二级标题,响应内容用HTML代码块包裹,不同请求结果之间用分割线区隔,完全不会出现内容混杂的问题。 - 脚本会自动过滤掉响应不包含指定关键词的请求,最终文件仅保留符合匹配规则的URL和对应响应。
- 如果你需要先留存全量请求结果再做过滤,只要删除脚本中关键词判断的if逻辑,让所有响应都写入结果文件即可。
内容的提问来源于stack exchange,提问作者Danish Sattar
相关产品推荐
相关产品推荐

