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

如何用bash提取curl请求指定字段并将最新结果追加到txt文件开头

解决方案

实现逻辑

  • 先调用curl获取服务响应头,过滤出需要的HTTP状态行和Date日期行
  • 采用「新内容在前+旧内容在后」的顺序合并内容后覆写日志文件,实现最新响应置顶
  • 用临时文件做中转写入,避免操作过程中损坏原日志文件,同时解决sed传参的问题

修改后的完整脚本

#!/bin/sh
LOG_FILE="/home/debian2/debian0_ping.txt"
# 创建临时文件用于原子写入
TMP_FILE=$(mktemp)

# 抓取响应头并过滤需要的两行,写入临时文件(新内容在前)
curl -s -I http://192.168.100.16:4000/status | grep -E '^HTTP/|^Date:' > "$TMP_FILE"
# 原日志文件存在时,将旧内容追加到临时文件末尾
[ -f "$LOG_FILE" ] && cat "$LOG_FILE" >> "$TMP_FILE"
# 可选:限制日志最大行数,避免文件无限膨胀,示例保留最近100条请求(共200行),不需要可删除
sed -i '201,$d' "$TMP_FILE"
# 覆盖原日志文件
mv "$TMP_FILE" "$LOG_FILE"

参数说明

  • curl添加-s静默参数,避免输出进度信息污染日志
  • grep的正则匹配规则仅会保留开头的HTTP状态行和Date日期行,符合你的过滤需求
  • 临时文件+mv的写入方式是原子操作,就算脚本中途异常中断也不会损坏原有日志

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 07:45:03