簡體   English   中英

日期輸出作為命令行參數

[英]Date output as command-line argument

我想計算最近5分鍾內與模式匹配的系統日志條目。

我可以對時間進行硬編碼並獲得預期的輸出:

$ awk '$3>"16:20:00"' /var/log/syslog | grep "UFW BLOCK" | wc -l
1502

所需時間可以用以下方法構造:

$ date --date='5 minutes ago' '+%H:%M:%S'
16:00:00

我如何才能將它們以單線方式加入?

我嘗試設置環境變量,但是它返回整個日志。 我看不到我的錯誤。

$ logdate=`date --date='5 minutes ago' '+%H:%M:%S'` && awk '$3>"$logdate"' /var/log/syslog | grep "UFW BLOCK"

您可以使用:

awk -v dt="$(date --date='5 minutes ago' '+%H:%M:%S')" '$3>dt && /UFW BLOCK/' /var/log/syslog

注意如何通過使用awk來執行搜索模式來避免最后一次grep

您的awk命令是單引號,它將禁用外殼程序的字符串插值。 檢查此類錯誤的一種簡單方法是將awk更改為echo並查看其含義( $3>"$logdate" )。 如果您使用雙引號並適當地轉義了字符( "\\$3>\\"$logdate\\"" ,那么您將傳遞給awk您想要的參數。

$ logdate=`date --date='5 minutes ago' '+%H:%M:%S'` && awk "\$3>\"$logdate\"" /var/log/syslog | grep "UFW BLOCK"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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