天天看點

第二十五課 grep\egrep工具的使用一、什麼是正則二、grep、egrep工具總結:

一、什麼是正則

正則就是一串有規律的字元串。掌握好正則對于編寫shell有很大幫助!!!

二、grep、egrep工具

1、指令格式:grep -cinvrABC 'word' filename

c 行數

i 不區分大小寫

-c 列印符合要求的行數 grep -c 'nologin' /etc/passwd (顯示過濾字元的行數)

(為什麼過濾的選項什麼标紅? which grep)

-i 忽略大小寫 grep -i 'nologin' passwd (不分大小寫,标紅顯示我們過濾的字元)

第二十五課 grep\egrep工具的使用一、什麼是正則二、grep、egrep工具總結:

-n 輸出符合要求的行及行号 grep -ni 'nologin' passwd

-v 列印不符合要求的行 grep -v 'nologin' passwd (列了沒有這個字元的行)

-r 周遊所有的子目錄 grep -r 'root' /etc/ (列出ect目錄所有檔案包括root字元的行)

-A 後面跟一個數字,列印出符合要求的行及在行下面列出不符合要求的兩行

grep -nA2 'nologin' passwd

-B 後面跟一個數字,列印出符合要求的行及在行上面列出不符合要求的兩行

grep -B2 'nologin' passwd

-C 後面跟一個數字,列印出符合要求的行及在行上下面各列出不出不符合要求的兩行

grep -C4 'nologin' passwd

2、grep的具體用法

正規表達式:

grep '[0-9]' passwd 過濾所有包括數字的行;

grep -v '[0-9]' /etc/inittab 過濾所有不包含數字的行;

grep -n '^#' /etc/inittab 過濾有#号開頭的行;

grep -nv '^#' /etc/inittab 過濾出沒有#的行;

grep '[^0-9]' /etc/inittab 非數字就符合要求,^就是非;

grep '^[^0-9]' /etc/inittab 非數字開頭的行。第一個^就是開頭的意思,在括号裡就取反,非的意思。

grep 'r.o' passwd “.”表示任意的一個字元。也就是說r.o可以=rao \r2o \rAo

grep 'o星号o' passwd 星号表示0個或多個*前面那個字元,在這一行裡表示n個o

grep '.星号' passwd .星号表示任意個任意字元

grep 'o{2}' passwd 表示比對2次o,{ }表示一個範圍。如果覺得脫義符号不好寫,也可以寫成:egrep 'o{2}' passwd 也可以寫成: grep -E 'o{2}' passwd,

grep '(oo){2}' passwd 表示比對2次oo

grep 'o+o' passwd + 表示1次或多次的+前面的那個字元。可以寫成:egrep 'o+o' passwd

grep 'o\?o' passwd ?表示 ? 号前面字元的重複0次或1次.可以寫成: egrep 'o?o' passwd

grep -E 'root|nologin' passwd | 表示或者,同時過濾出有root或者nologin的行

*把一個目錄下,過濾所有 .php文檔中含有eval的行*

grep -r --include=".php" 'eval' /data/

總結: