У меня есть журнал брандмауэра, который имеет отметку времени в формате 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 / май / 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