2014-02-27 55 views
0

可以說我有一個目錄中的日誌文件,帶有日期文件名,如20140122,20140123,20140124等等。grep包含一系列數據的行的文件名範圍

裏面這些日誌文件,每次我發佈到日誌文件我有一個日期時間字符串後面的數據,比如時間:

Thu Jan 23 02:04:48 EST 2014 
bbb:Encryption of file: bbb has finished. 

我想這樣做是開始了線的grep短語,bbb:,日期時間在時間​​範圍之內,例如01:00:00 - 03:00:00,並在匹配日期範圍的文件中找到,例如20140122-20140124

在這個例子中,grep將理想地返回上述兩行,以及任何其他線匹配的時間的標準1和凌晨3點,並用BBB開始之間:

任何建議?

編輯:我決定從一個文件系統更改爲一個數據庫系統,所以雖然我仍然希望找到一個答案,對於其他可能需要類似某一天的人來說,現在可以關閉此問題,因爲如果您想。

+0

讓我們忘記grep是你夢想的答案,並告訴我們你想傳遞給這個奇蹟腳本的實際參數以及我們如何推斷出「bbb」是一個文件。 –

+0

以及參數將是2 8位數字,是我需要搜索的文件的限制,以及一個字符串是搜索詞,搜索詞是bbb。它不是文件本身,它是文件中的一行。我的帖子有點誤導,道歉。 –

回答

0

這似乎爲我工作:

for file in 2014012{2..4} 
do 
    echo 
    echo "<<<<-" $file "->>>>" 
    grep --no-group-separator -B1 -e '^bbb:' $file | \ 
    awk '$4>="01:00:00" && $4<="03:00:00"{print $0;getline;print $0}' 
done 
+0

這可能不適用於我,因爲我不知道日期或時間會是什麼。這可能可以修改,以迎合這一點,所以,謝謝。 –

0

我想,你應該在一些不太複雜的零件拆了你的問題。 「如何獲得名稱在範圍內的文件」,「我怎樣才能grep文件的內容」等等。

對不起,我不明白你想grep什麼,但你可以找到你的文件。

mkdir a{1,2,3,4,5,6,7}; ls | sort -n | sed -n '/a3/,/a6/p'; rm -r a{1,2,3,4,5,6,7} 

它創建樣品迪爾斯,得到一個目錄列表,爲數字排序的文件名,A3和A6之間獲得串並清除了一切。

而且,是的,您應該確保存在日期名稱的文件,如果不存在,請取得最接近的文件。這可能是你的一個單獨的問題,如何做到這一點。

相關問題