如何用sed匹配防火墙日志中前一天日期并替换为当日日期?
解决方法:自动替换防火墙日志中的日期
这事儿处理起来很简单,咱们只需要把日期变量和 sed 结合起来就行,核心是要避开日期里的斜杠和 sed 分隔符冲突的问题,具体步骤如下:
第一步:定义日期变量
先通过date命令把前一天和当天的日期存到变量里,后续调用更方便:# 获取前一天的日期,格式和日志完全匹配 prev_day=$(date -d '-1 day' '+%d/%B/%Y') # 获取当日日期 curr_day=$(date +%d/%B/%Y)第二步:用
sed执行替换
因为日期格式里包含斜杠/,如果还用/作为sed替换命令的分隔符,会直接触发语法错误。所以咱们换个不冲突的分隔符,比如竖线|:sed "s|$prev_day|$curr_day|g" firewall.log执行这个命令后,日志里所有匹配到前一天日期的部分都会被替换成当日日期,完全符合你期望的输出效果。
额外提示
如果你想要直接修改原日志文件,可以加上 -i 参数(注意:这个操作会直接覆盖原文件,建议先备份或者先不加 -i 验证输出正确后再使用):
sed -i "s|$prev_day|$curr_day|g" firewall.log
内容的提问来源于stack exchange,提问作者Arun
相关产品推荐
相关产品推荐

