簡體   English   中英

Unix搜索並使用sed替換

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM