場景
有的時候,我們需要針對應用日志分析某個請求后產生的報錯信息,但是由於應用的日志很多,我們只想獲取第一次請求的前幾行、后幾行數據,或者 最后一次請求的請求前幾行、后幾行數據
分析
(0)文件aaa.txt內容
(1)在文件名中搜索關鍵字出現的行
grep "關鍵字" 文件名
(2)在文件名中搜索關鍵字出現的行,並顯示行號
grep -n "關鍵字" 文件名
(3)搜索關鍵字所在行以及后n行
grep -A n "關鍵字" 文件名
備注:A,after
(4)搜索關鍵字所在行以及前n行
grep -B n "關鍵字" 文件名
備注:B,Before
(5)搜索關鍵字所在行以及前后n行
grep -C n "關鍵字" 文件名
(6)搜索關鍵字第一次出現位置的前后M行
grep -C M "關鍵字" 文件名 |head -n 2*M+1
備注:關鍵字+關鍵字前M行+關鍵字后M行,所以結果為 2M+1
(7)搜索關鍵字最后一次出現位置的前后M行
grep -C M "關鍵字" 文件名 |tail -n 2*M+1
(8)搜索關鍵字最后一次出現位置的前后M行,並寫入文件,如果文件存在則覆蓋
grep -C M "關鍵字" 文件名 |tail -n 2*M+1 > 文件名
備注:>
表示覆蓋寫入
(9)搜索關鍵字最后一次出現位置的前后M行,並寫入文件,如果文件存在則追加
grep -C M "關鍵字" 文件名 |tail -n 2*M+1 >> 文件名
備注:>>
表示追加寫入
總結
搜索catalina.out中"Exception"關鍵字第一次出現位置的前后10行,並寫入文件22.log
grep -C 10 "Exception" catalina.out |head -n 2*10+1 >22.log
搜索catalina.out中"Exception"關鍵字最后一次出現位置的前后10行,並寫入文件22.log
grep -C 10 "Exception" catalina.out |tail -n 2*10+1 >22.log