Linux grep的高階使用

2021-09-26 16:05:11 字數 2253 閱讀 2167

這篇文章會寫grep的一些案例,如果你對grep的使用不太了解,那麼就跟這文章一點點的實戰吧!

所需的檔案

搜尋特定字元

搜尋特定字串很簡單吧?假設我們要從剛剛的檔案當中取得 the 這個特定字串,最簡單的方 式就是這樣:

grep -n 『the』 filename

加 -n會顯示檔案行號,而且還是區分大小寫的

不區分大小寫的查詢,會發現比上邊多了幾行,那是因為不區分大小寫,把所有的行顯示出來

利用中括號來搜尋字元

如果我想要搜尋 test 或 taste 這兩個單字時,可以發現到,其實她們有共通的 『t?st』 存在~這 個時候,我可以這樣來搜尋

其實 裡面不論有幾個字元,他都僅代表某「乙個」字元, 所以,上面的例子說明 了,我需要的字串是「tast」或「test」兩個字串而已! 而如果想要搜尋到有 oo 的字元時,則使 用:

但是,如果我不想要 oo 前面有 g 的話呢?此時,可以利用在集合字元的反向選擇 來達成 意思就是說,我需要的是 oo ,但是 oo 前面不能是 g 就是了!仔細比較上面兩個**,你會 發現,第 1,9 行不見了,因為 oo 前面出現了 g 所致!第 2,3 行沒有疑問,因為 foo 與 foo 均 可被接受!但是第 18 行明明有 google 的 goo 啊~別忘記了,因為該行後面出現了 tool 的 too 啊!所以該行也被列出來~ 也就是說, 18 行裡面雖然出現了我們所不要的專案 (goo) 但是由於有需要的專案 (too) , 因此,是符合字串搜尋的喔!至於第 19 行,同樣的,因為 goooooogle 裡面的 oo 前面可能是 o ,例如: go(ooo)oogle ,所以,這一行也是符合需求的

取出oo前邊的小寫

取出帶數字的行

取出以the開頭的行

取出以小寫字母開頭的行

取出開頭不想為字母的行

取出尾行為小數點的

小數點具有其他意義,所以必須要使用跳脫字元(\)來加 以解除其特殊意義!

取出空白行

需要找出 g??d 的字串

想要找出 g 開頭與 g 結尾的字串

但測試的結果竟然出現這麼多行?太詭異了吧?其實一點也不詭異,因為 gg 裡面的 g 代 表「空字元或乙個以上的 g」 在加上後面的 g ,因此,整個 re 的內容就是 g, gg, ggg, gggg , 因此,只要該行當中擁有乙個以上的 g 就符合所需了!

那該如何得到我們的 g…g 的需求呢?呵呵!就利用任意乙個字元「.」啊! 亦即是:「g.g」的作 法,因為 可以是 0 或多個重複前面的字元,而 . 是任意字元,所以: 「.* 就代表零個或多個任 意字元」的意思啦!

13. 要找出「任意數字」的行列

14. 如果在有幾行資料時,可以進行反向選擇

grep -v name即可

這樣就可以顯示除了name這一行的所有資料了

當我們搜尋配置問件時,那是相當痛苦的,因為配置檔案裡邊有很多都是#開頭的,但是我們又不需要的,下來就解決這個問題

搜尋出不以#開頭的

當檔案裡邊有空格時,去除空格的也是可以的

linux grep命令的使用

用 grep 搜尋文字檔案 如果您要在幾個文字檔案中查詢一字串,可以使用 grep 命令。grep 在文字中搜尋指定的字串。假設您正在 usr src linux documentation 目錄下搜尋帶字串 magic 的檔案 grep magic usr src linux documentat...

linux grep命令的使用

用 grep 搜尋文字檔案 如果您要在幾個文字檔案中查詢一字串,可以使用 grep 命令。grep 在文字中搜尋指定的字串。假設您正在 usr src linux documentation 目錄下搜尋帶字串 magic 的檔案 grep magic usr src linux documentat...

Linux grep命令使用大全

grep是一種使用正規表示式的多用途文字搜尋工具 global search regular expression re and print out the line 主要引數 c 僅僅輸出匹配行的計數。i 不區分大 小寫 僅僅適用於單字元 h 查詢多檔案時不顯示檔名稱。l 查詢多檔案時僅僅輸出包括...