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

如何编写Bash脚本比较两个文件第13行的GMT格式日期大小

Bash 对比两个文件指定行日期先后的实现方案

实现思路

  • 首先提取两个文件的第13行日期字符串
  • 调用date命令将人类可读的日期格式转换为Unix 时间戳(从1970年1月1日0点起的总秒数,数值越大代表时间越晚)
  • 直接比较两个时间戳的数值大小即可判断日期先后

完整脚本示例

#!/bin/bash
# 传入两个文件路径作为参数
file1="$1"
file2="$2"

# 检查参数数量是否正确
if [ $# -ne 2 ];then
    echo "用法:$0 <文件1路径> <文件2路径>"
    exit 1
fi
# 检查文件是否存在
if [ ! -f "$file1" ] || [ ! -f "$file2" ];then
    echo "错误:请传入有效的文件路径"
    exit 1
fi

# 提取两个文件第13行的内容
date1=$(sed -n '13p' "$file1")
date2=$(sed -n '13p' "$file2")

# 转换为Unix时间戳(GNU date 写法,适用于绝大多数Linux发行版)
ts1=$(date -d "$date1" +%s)
ts2=$(date -d "$date2" +%s)

# 如果你使用的是macOS(BSD date),请把上面两行替换为下面的写法:
# ts1=$(date -jf "%b %e %H:%M:%S %Y GMT" "$date1" +%s)
# ts2=$(date -jf "%b %e %H:%M:%S %Y GMT" "$date2" +%s)

# 比较时间戳判断先后
if [ $ts1 -gt $ts2 ];then
    echo "文件1的第13行日期更晚(更大)"
elif [ $ts1 -lt $ts2 ];then
    echo "文件2的第13行日期更晚(更大)"
else
    echo "两个文件的第13行日期完全一致"
fi

使用方法

给脚本添加执行权限后直接传入两个文件路径运行即可:

chmod +x compare_date.sh
./compare_date.sh 文件1路径 文件2路径

注意事项

  • 若文件第13行除了目标日期外还有其他内容,可在提取后通过grep、awk等命令先过滤出日期字符串再做转换
  • 不同系统的date命令语法存在差异,脚本已经标注了Linux和macOS两套写法,请根据你的运行环境选择

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 08:45:03