有的時候,我們需要分析日誌來排查錯誤,但是日誌檔案特別大,開啟肯定是很慢的,也是沒法接受的,我們需要的是快速定位錯誤出現的位置,並定向取出錯誤資訊。
快速定位某個字串在某檔案中出現的行數,可以使用 linux中grep命令
預設情況,grep命令只會輸出匹配的字串所在的行,如下:
要想同時輸出行號,可以指定引數-n,關於-n引數描述如下:
現在,我們已經確定要查詢的錯誤所在行數,就可以通過 tail和head或是sed命令輸出特定的行
通過tail –help ,我們可以看到tail 預設顯示最後10行,通過 -n引數可以指定從第n行數開始顯示,或是顯示最後n行,如下:
-n, --lines=k output the last k lines, instead of the last 10; or
use -n +k to output lines starting with the kth
也就是說:
tail -n 5 f.txt //顯示f.txt最後5行
tail -n +5 f.txt //從第5行開始,顯示f.txt
通過head –help ,我們可以看到head預設顯示最前10行,通過 -n引數可以指定從倒數第n行開始,顯示前面的所有,或是顯示最前面的n行
-n, --lines=[-]k print the first k lines instead of the first 10; with the leading `-', print all but the last
也就是說:
head -n
5 f.txt //顯示f.txt最前面5行
tail -n
-5 f.txt //從倒數第5行開始,顯示前面的所有內容
比如,在上面我們定位到了8786830行,那麼,我們就可以利用tail和head,查其附近的內容(即錯誤前20行,後10行內容),如下:
tail -n
+8786810 err.
log|head -n
30
通過sed來檢視指定的行,就比較簡單,格式如下:
sed -n "n1,n2p" f.txt //檢視f.txt n1行到n2行之間的內容
比如,在上面我們定位到了8786830行,那麼,我們就可以利用sed,查其附近的內容(即錯誤前20行,後10行內容),如下:
sed -n "8786810,8786840p"
err.log
shell查詢某字串在某檔案中出現行數
一 簡介 有的時候,我們需要分析日誌來排查錯誤,但是日誌檔案特別大,開啟肯定是很慢的,也是沒法接受的,我們需要的是快速定位錯誤出現的位置,並定向取出錯誤資訊。快速定位某個字串在某檔案中出現的行數,可以使用 linux中grep命令 預設情況,grep命令只會輸出匹配的字串所在的行,如下 要想同時輸出...
Linux查詢含有某字串的所有檔案
如果你想在當前目錄下 查詢 send 字串,可以這樣 表示當前目錄所有檔案,也可以是某個檔名 r 是遞迴查詢 n 是顯示行號 r 查詢所有檔案包含子目錄 i 忽略大小寫 下面是一些有意思的命令列引數 grep i pattern files 不區分大小寫地搜尋。預設情況區分大小寫,grep l pa...
Linux查詢含有某字串的所有檔案
如果你想在當前目錄下 查詢 hello,world 字串,可以這樣 grep rn hello,world 表示當前目錄所有檔案,也可以是某個檔名 r 是遞迴查詢 n 是顯示行號 r 查詢所有檔案包含子目錄 i 忽略大小寫 下面是一些有意思的命令列引數 grep i pattern files 不區...