2014-09-30 78 views
0

我想根據所有文件中存在的一些常見內容對文件名(日誌文件)進行排序。每個日誌文件都以'p'開頭,後面跟着一些數字並以'.log結尾。如:根據其內容對日誌文件進行排序

P029387.log 

在每個日誌文件,有一個共同的字符串:「操作的計數是」,如:

total access time is 321 seconds 

我想寫bash命令將輸出上述字符串中的每個文件中找到,再加上自身的文件名,如:

"total access time is 267 seconds" P110234.log 
"total access time is 47 seconds" P202931.log 
"total access time is 55 seconds" P239871.log 

到目前爲止,我已經能夠在日誌文件的內容進行排序,但不打印它們的文件名:

find . -name p*.log -exec grep "count of operations is 「 {} \; |sort -n –k5 

但輸出被限制爲:

"total access time is 267 seconds" 
"total access time is 47 seconds" 
"total access time is 55 seconds" 

感謝您的幫助。

回答

1

如果你不關心,準確的格式,那麼只:可能與-H

grep 'total access time is ' P*.log 

如果這不是默認的(或默認參數禁用/別名)將讓你:

P110234.log:"total access time is 267 seconds" 
P202931.log:"total access time is 47 seconds" 
P239871.log:"total access time is 55 seconds" 

如果你想你的準確輸出,那麼它可能是最容易使用的東西,如:

awk '/total access time is /{print $0,FILENAME}' P*.log 

或偶數列間距:

awk '/total access time is /{print $0"\t"FILENAME}' P*.log | column -t 
1

使用選項grep -H它打印的文件名:

find . -name p*.log -exec grep -H "count of operations is 「 {} \; |sort -n –k5 
相關問題