Bash 使用sed进行Unix搜索和替换
我有一个防火墙日志,它的时间戳格式为Bash 使用sed进行Unix搜索和替换,bash,shell,sed,Bash,Shell,Sed,我有一个防火墙日志,它的时间戳格式为date+%d/%B/%Y $ date +%d/%B/%Y 21/May/2018 日志行(输入): 我知道如何每天使用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/
date+%d/%B/%Y
$ date +%d/%B/%Y
21/May/2018
日志行(输入):
我知道如何每天使用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
如何使用(2018年5月21日)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
像这样的东西应该有用:
sed 's!'$(date -d '-1 day' '+%d/%B/%Y')'!'$(date +%d/%B/%Y)'!g' firewall.log
您可以添加
-i
标志来覆盖日志,例如,sed-i…
如果您也可以在文章中使用代码标记发布输入和预期输出的示例,那就更好了。您为什么要更改日志:)
sed 's!'$(date -d '-1 day' '+%d/%B/%Y')'!'$(date +%d/%B/%Y)'!g' firewall.log