2012-12-20 64 views
1

我在各種日誌文件(基本上它們設置爲旋轉日誌)上分佈有日誌文件。我需要根據日期和時間提取日誌.. 示例日誌文件具有以下內容。使用awk在多個日誌文件上根據日期和時間範圍進行日誌文件搜索

2012.12.06 01:56:01 AUTH_SERVER.VMP_SYS [main - ] <INFO > Loaded properties 
2012.12.06 01:56:01 AUTH_SERVER.VMP_SYS [main - ] <INFO > Initialized logging 
2012.12.06 01:56:01 AUTH_SERVER.VMP_SYS [main - ] <CONFIG > Log levels = 

我試圖與下面的awk的一個班輪...

awk -F - '"2012.12.06 01:56:01" < $1 && $1 <= "2012.12.08 04:30:00"' server.log server.log.1 

這種打印出需要什麼...

,但想用for循環運行通過使用此文件在一個txt文件中提取的日誌文件名列表

find server.log* -exec ls -lth {} \; | awk '{print $9}' > logfilenames.txt 

我需要使用日誌文件名(它具有該目錄中的日誌文件的完整路徑)作爲for循環中的輸入以從開始日期時間到結束日期時間搜索正確的日誌文件名並將其輸出到不同的文件。

需要for循環的幫助才能完成此腳本。

+0

好問題,但我們不能告訴你期望在logfilenames.txt中。完整路徑,ls -lth或OR的完整列表請編輯您的問題以包含filel logfilenames.txt的必需輸出。祝你好運。 – shellter

+0

logfilenames.txt ...將具有來自find server.log的輸出* -exec ls -lth {} \; | awk'{print $ 9}'作爲/directory/subdirectory/logs/server.log – Venki

回答

0

爲什麼不只是做

awk -F - '"2012.12.06 01:56:01" < $1 && $1 <= "2012.12.08 04:30:00"' server.log*

cat `cat logfilenames.txt` 

將貓全部包含在logfilenames.txt的文件。你可以在輸出上運行awk。

您還可以使用xargs並將grep的輸出重定向到awk。所以要使用你給你的兩個命令可以做到這一點:

find server.log* -exec ls -lth {} \; | awk '{print $9}' | xargs awk -F - '"2012.12.06 01:56:01" < $1 && $1 <= "2012.12.08 04:30:00"' 
+0

好吧,那當然有效......謝謝。但我如何在輸出awk?此外,如果我想輸出給用戶,說明開始日期和時間以及結束日期時間位於這些服務器日誌文件中,那麼這對用戶來說只是很好的信息。 – Venki

+0

我如何將其重定向到輸出文件..? awk -F - '「2012.12.06 01:56:01」<$ 1 && $ 1 <=「2012.12.08 04:30:00」'server.log * – Venki

+0

Logfile =「$ HOSTNAME.log」 awk - F - '「$ starttime」<$ 1 && $ 1 <=「$ endtime」'server.log *>「$ Logfile」 這似乎不起作用... – Venki