2011-05-10 16 views
2

我無法獲得一堆gzipped apache訪問日誌文件中的行列表。我想要的只是獲得編號爲1和2的日誌文件列表,然後grep通過它們並提取具有特定匹配文本的行。gziped日誌文件管道特定列表到zgrep

我最初得到這個用於訪問日誌檔案只是工作編號爲1的「/路徑」文本中的文字我一直在尋找:

zgrep /pathname/ access_*.log.1.gz 

由於LS不支持正則表達式,我想出了下面從我想要的文件的當前目錄得到的列表:

find . -maxdepth 1 -type f -regex '\./access.+\.log\.[1|2]\.gz' -printf '%P\n' 

find . -maxdepth 1 -type f -regex '\./access.+\.log\.[1|2]\.gz' | sed "s|^\./||" 

我的問題現在正在該文件列表輸出,並通過文件zgrepping那些符合我的文字文件中返回行。我在這裏咆哮錯誤的樹嗎?

回答

2

嘗試:

zgrep /pathname/ access_*.log.{1,2}.gz 

另外,使用-exec發現:

find . -maxdepth 1 -type f -regex '\./access.+\.log\.[1|2]\.gz' -exec zgrep /path/ {} \; 
+0

該死的。在處理linux時,答案總是比你想象的要容易。這工作得很好,很笨拙。非常感謝! – ogradyjd 2011-05-10 15:48:15

+0

我使用了第一個,由和。我嘗試了第二個命令(使用exec),這也起作用。再次感謝您的答覆。 – ogradyjd 2011-05-10 16:02:54

0

我沒有Apache的日誌,所以我用一個類似,但不完全相同的模式:

ls /var/log/*.[12].gz 

shell不支持正則表達式,但與[123]或[1-3],以及{1,2,3}和{1..3}或甚至{o..w}和{066..091}。

相關問題