【问题标题】:Unix search and replace using sed使用 sed 进行 Unix 搜索和替换
【发布时间】:2018-05-21 22:06:48
【问题描述】:

我有一个防火墙日志,其时间戳格式为date +%d/%B/%Y

$ date +%d/%B/%Y

21/May/2018

日志线(输入):

#cat firewall.log 

1.5.5.1 - - [20/May/2018:00:00:00 +0000] "GET blah.com HTTP/1.1" 304 0 304 0 0 0 299 262 293 227 0

我了解如何每天使用sed 更改时间格式。

sed "s/\[20\/May\/2018/\[21\/May\/2018/g" firewall.log

我想用 unix 日期模块定期更改日志上的最新时间戳

$date +%d/%B/%Y
21/May/2018

我也知道如何获取上一个日期

$ date -d '-1 day' '+%d/%B/%Y'
20/May/2018 

如何匹配日志中前一天的日期并使用 (21/May/2018) sed 替换为最近一天的日期戳?

预期输出:

$sed "s/previous_day_match/latest_day_match/g" firewall.log


1.5.5.1 - - [21/May/2018:00:00:00 +0000] "GET blah.com HTTP/1.1" 304 0 304 0 0 0 299 262 293 227 0

【问题讨论】:

  • 如果您也可以使用代码标签在您的帖子中发布输入和预期输出示例会更好。
  • 为什么要更改日志:)

标签: bash shell sed


【解决方案1】:

这样的东西,应该可以工作:

sed 's!'$(date -d '-1 day' '+%d/%B/%Y')'!'$(date +%d/%B/%Y)'!g' firewall.log

您可以添加-i 标志来覆盖日志,例如sed -i ...

【讨论】:

    猜你喜欢
    • 2010-11-13
    • 2011-07-29
    • 2014-09-13
    • 2019-06-27
    • 2015-01-04
    • 1970-01-01
    • 1970-01-01
    • 2021-02-18
    • 2017-11-06
    相关资源
    最近更新 更多