1. 程式人生 > >正則表示式之grep,egrep

正則表示式之grep,egrep

正則表示式 正則表示式又稱規則表示式,正則就是一串有規律的字串,掌握好正則對於編寫shell指令碼有很大幫助,各種程式語言中都有正則,原理一樣。學好正則表示式,才算真正進入linux。正則三劍客grep/egrepsedawkgrep 過濾指定關鍵詞,egrep是grep的升級版grep [-cinvABC] ‘word’ filename-c 行數-i 不區分大小寫-n 顯示行號-v 除去,非,不包括,等反義-r 向下查詢所有目錄-A 跟數字,過濾包含指定字元的行及下面的n行字串-B 跟數字,過濾包含指定字元的行及上面的n行字串-C 跟數字,過濾包含指定字元的行及上下各n行字串
.grep 'nologin' passwd 過濾passwd檔案中包含nologin的字串grep -c 'nologin' passwd 過濾包含nologin的字串並統計行數grep -n 'nologin' passwd , 過濾包含nologin的字串並顯示行號,區分大寫grep -ni 'nologin' passwd 不分大小寫過濾包含nologin的字串並顯示行號grep -vni 'nologin' passwd 不分大小寫過濾不包括nologin的字串並顯示行號grep -r ‘root’ /etc/ 逐級向下層目錄文檔案過濾包含root的字串grep -A2 'root' passwd 過濾包含root的字串行及以下2行字串grep -nA2 'root' passwd 過濾包含root的字串行及以下2行字串,並顯示行號grep -nB5 'root' passwd 過濾包含root的字串行及以上5行字串,並顯示行號grep -nC3 'root' passwd 過濾包含root的字串行及以上下各3行字串,並顯示行號grep '[0-9]' /etc/initab 過濾包含集合條件的字串grep -v '[0-9]' /etc/initab 過濾不包含集合條件的字串grep -v '^#' /etc/initab 過濾不包含以#開頭的字串grep -v '^#' /etc/initab|grep -v '^$' 過濾不包含以#開頭的字串或過濾不包含以$開頭的字串grep '^[^a-zA-Z]' test.txt 過濾以非集合條件開頭的字串grep 'r.o' test.txt 過濾中間包含任意單字元的ro組合的字串grep 'r*o' test.txt 過濾中間包含任意個任意字元的ro組合的字串grep ‘.
*' test.txt 過濾重複出現任意次的一個單字元的字串,.表示任意的單字元grep 'oo*' test.txt 過濾重複出現任意次的oo的字串grep 'o\{2\}' /etc/passwd 過濾重複出現兩次o的字串grep 'o\{0,3\}' /etc/passwd 過濾重複出現0到3次o的字串grep -E 'o{2}' /etc/passwd 過濾重複出現2次o的字串egrep 'o{2}' /etc/passwd 過濾重複出現2次o的字串
egrep 'o+t' /etc/passwd 過濾重複出現1次以上的o與字元t的組合的字串grep ‘o\+m' /etc/passwd 過濾重複出現1次以上的o與字元m的組合的字串egrep 'o?e' /etc/passwd 過濾重複0次或1次的o與e的組合的字串egrep 'root|nologin' /etc/passwd 過濾包含root或nologin的字串grep -Ei 'root'|'nologin' 不分大小寫過濾包含root或nologin的字串egrep '(oo){2}' /etc/passwd 過濾重複出現2次的oo組合的字串grep -r --include="*.php" 'eval' /*/ 過濾單目錄下所有.php檔案裡含有eval的字串