我正在嘗試處理日誌文件,並且需要能夠指定日期範圍。到目前爲止(在任何處理之前),我使用date --date "monday" +%s
將日期/時間字符串轉換爲時間戳。在AWK內運行shell命令
現在,我想能夠遍歷文件中的每一行,但檢查日期(以可讀格式)是否在允許的範圍內。要做到這一點,我想這樣做如下:
echo `awk '{if(`date --date "$3 $4 $5 $6 $7" +%s` > $START && `date --date "" +%s` <= $END){/*processing code here*/}}' myfile`
我甚至不知道如果多數民衆贊成可能的...我已經嘗試了很多的變化,再加上我找不到任何東西可以在線理解/使用。
由於
更新:
MYFILE的實施例是如下。它記錄IP地址和訪問時間:
123.80.114.20 Sun May 01 11:52:28 GMT 2011
144.124.67.139 Sun May 01 16:11:31 GMT 2011
178.221.138.12 Mon May 02 08:59:23 GMT 2011
作爲對date命令進行脫殼的替代方案,可以考慮使用內置的awk函數mktime()來從字符串中解析日期。例如:sec = mktime($ 3「」$ 4「」$ 5「」$ 6「」$ 7「00」);如果($ sec> $ START)... – neillb 2011-05-03 21:14:25
這是一個一次性項目,還是每天要處理兆字節的日誌文件? – shellter 2011-05-03 21:26:04
一次性。它實際上是考試的修訂版,在課堂筆記中找不到關於它的任何內容。在這裏更容易提問,因爲答案往往更好! – Josh 2011-05-03 21:28:36