溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

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

發(fā)布時間:2020-07-24 14:43:03 來源:網(wǎng)絡(luò) 閱讀:4007 作者:上帝之子521 欄目:開發(fā)技術(shù)

        今天我們來學(xué)習(xí)下 shell 中的 grep 和正則表達式。作為基礎(chǔ)入門學(xué)習(xí),也只是學(xué)習(xí)一些簡單的語法。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        下來我們逐一來看看。

        1、^

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

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

        2、$

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

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

        3、* 和 ?

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

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

        4、 .

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

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

        5、pattern\{n\}

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

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

        6、pattern\{n, \}

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

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

        7、pattern\{n,m\}

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

        我們看到這次是在數(shù)字開頭的 2 和 4 之間的字符串。經(jīng)過學(xué)習(xí)了這么多正則表達式的用法,發(fā)現(xiàn)它還是很靈活的,后面我們會繼續(xù)對正則表達式的學(xué)習(xí)。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI