一、grep命令介紹
命令格式:grep [-cinvABC] ‘word’ filename,常用選項如下:
- -c:表示打印符合要求的行數。
- -i:表示忽略大小寫。
- -n:表示輸出符合要求的行及其行號。
- -v:表示打印不符合要求的行。
- -A:后面跟一個數字(有無空格都可以),例如-A2表示打印符合要求的行以及下面兩行。
- -B:后面跟一個數字,例如-B2表示打印符合要求的行以及上面兩行。
- -C:后面跟一個數字,例如-C2表示打印符合要求的行以及上下各兩行。

二、過濾出帶有某個關鍵詞的行,並輸出行號

說明:前面的數字顯示為綠色,表示行號。
三、過濾出不帶有某個關鍵字的行,並輸出行號

四、過濾出所有包含數字的行

說明:只要有一個數字就算匹配到了。
五、過濾出所有不包含數字的行

說明:只要包含一個數字,就不顯示。
六、過濾掉所有以#開頭的行

說明:這里面是包含有空行的。
七、過濾掉所有空行和以#開頭的行

在正則表達式中,^表示行的開始,$表示行的結尾,^$表示空行。
如何打印出不以英文字母開頭的行?示例如下:

說明:如果要過濾數字就用[0-9]這樣的形式(當遇到類似[15]的形式時表示只含有1或者5)。如果要過濾數字以及大小寫字母,則要寫成類似[0-9a-zA-Z]的形式。另外,[^字符]表示除[ ]內字符之外的字符。
注意:把^寫到方括號里面和外面是有區別的。
八、過濾出任意一個字符和重復字符

.表示任意一個字符。上例中,r.o表示把r與o之間有一個任意字符的行過濾出來。

*表示零個或多個*前面的字符。上例中,ooo*表示oo、ooo、oooo...或者更多的o。

上例中,.*表示零個或多個任意字符,空行也包含在內,它會把/etc/passwd文件里面的所有行都匹配到。
九、指定要過濾出的字符出現字數

說明:符號{ },其內部為數字,表示前面的字符要重復的次數。
注意(划重點):{ }左右都需要加上轉義字符\。另外,使用“{ }”還可以表示一個范圍,具體格式為{n1,n2},其中n1 < n2,表示重復n1到n2次前面的字符,n2還可以為空,這時表示大於等於n1次。
十、過濾出一個或多個指定的字符(開始使用egrep命令)

說明:egrep命令使用的是符號+,它表示匹配1個或多個+前面的字符,這個“+”不支持被grep命令直接使用;{ }可以直接被egrep使用,而不用加 \ 轉義。例如:

十一、過濾出零個或一個指定的字符

十二、過濾出字符串1或者字符串2

十三、egrep中( )的使用

說明:這里用( )表示一個整體,上例中會把包含rooo或者rato的行過濾出來。
另外說明:還可以把( )和其他符號組合在一起,例如:

