shell 之 grep 和正則表達式(五)

        今天我們來學習下 shell 中的 grep 和正則表達式。作爲基礎入門學習,也只是學習一些簡單的語法。

        首先我們來看看 grep 查找命令。我們先來看看 man grep

圖片.png

        我們看到 grep 的用法有很多,我們就來看看最常用的一些操作。

圖片.png

        我們可以看到 grep "a" test.txt 和 cat test.txt | grep "a" 的效果是一樣的,都是查找 a 這個字符。那麼我們在前面加上 -v 呢,它表示的是除了帶有 a 字符剩餘的別的內容

圖片.png

        我們看到 -c 的意思是打印出所查找字符的行數-v -c 就代表的是除所查找的字符以外的所有行數

圖片.png

        我們看到 -n 便是加上它所在的行號,同樣的也適用於 cat 命令

圖片.png

        我們看到 -A 2 是顯示所查找的字符的後兩行(after);-B 2 是顯示所查找的字符前兩行(before);-A 2 -B 2 和 -C 2 的效果是一樣的,都是顯示所查找字符的前後兩行的數據

圖片.png

        我們看到在 -r 選項是遞歸查找,如果我們在查找的子目錄中也有相應的字符串,那麼我們此時加上 -r ,便會全部查找到。

        下來我們來學習下正則表達式,那麼爲什麼要學習正則表達式呢?正則表達式: a> 能模糊、快速匹配數據串;b> 爲學習 grep,awk,sed 等文本過濾命令做鋪墊;c > 編寫高級 bash 腳本的需要。那麼正則表達式有哪些元字符呢?[ ] \ ^ $ . | ? * + ( )

        我們接下來來看看這些基本元字符的含義,如下

 圖片.png

        下來我們逐一來看看。

        1、^

圖片.png

        我們看到 ls | grep '^[0-9]' 查找的是以 0-9 開頭的文件,下面是 0-3 開頭的文件。在裏面加上 ^ 表示非 0-3 開頭的所有文件。

        2、$

圖片.png

        我們看到我們在查找以 e 結尾的字符,然後再以數字 0-9 開頭的,它只能嚴格匹配到 3e 和 4e;而 56e 只能以不是 ^ 開頭的這樣方式來進行匹配。

        3、* 和 ?

圖片.png

        我們看到在以數字開頭,?* 後面接任意字符的字符串全被打印出來了。

        4、 .

圖片.png

        我們看到在以 5 開頭,e 結尾的字符串 56e 被成功匹配出來;

        5、pattern\{n\}

圖片.png

        我們看到兩次的區別是什麼呢?前一次的是隻要符合條件就都匹配出來,加上 ^ 則表示只以兩個數字開頭的字符串被匹配出來。

        6、pattern\{n, \}

圖片.png

        我們看到效果是最少出現 2 次,在後面我們寫進去的 77777777 也被匹配出來了。

        7、pattern\{n,m\}

圖片.png

        我們看到這次是在數字開頭的 2 和 4 之間的字符串。經過學習了這麼多正則表達式的用法,發現它還是很靈活的,後面我們會繼續對正則表達式的學習。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章