[英]Unix search and replace using sed
我有一個防火牆日志,該日志的時間戳記為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模塊的日志上定期更改為最新時間戳
$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
像這樣的東西應該工作:
sed 's!'$(date -d '-1 day' '+%d/%B/%Y')'!'$(date +%d/%B/%Y)'!g' firewall.log
並且您可以添加-i
標志來覆蓋日志,ei, sed -i ...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.