shell查詢某字串在某檔案中出現行數

2021-08-20 13:32:50 字數 1572 閱讀 8728

有的時候,我們需要分析日誌來排查錯誤,但是日誌檔案特別大,開啟肯定是很慢的,也是沒法接受的,我們需要的是快速定位錯誤出現的位置,並定向取出錯誤資訊。

快速定位某個字串在某檔案中出現的行數,可以使用 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 不區...