正則就是一串有規律的字符串shell
•掌握好正則對於編寫shell腳本有很大幫助編程
•各類編程語言中都有正則,原理是同樣的編程語言
•本章將要學習grep/egrep、sed、awk學習
grep [-cinvABC] 'word' filenameci
-c 統計匹配的行數字符串
-w 匹配一個單詞,更精準 // grep -w 'root' /etc/passwd 只會匹配精準符合root的行, 如文件裏是rooto 這種則不會匹配it
-i 不區分大小寫test
-n 顯示行號awk
-v 取反原理
-r 針對目錄操做, 查找目錄和子目錄中符合條件的文件(遍歷目錄) grep -r /etc/
-A 後面跟數字,過濾出符合要求的行以及下面n行
-B 同上,過濾出符合要求的行以及上面n行
-C 同上,同時過濾出符合要求的行以及上下各n行
-P 非貪婪模式 ,例: str="123abc0axc456" echo $str | grep -P 'a.?c' echo aaabbbaaabbbbcccbbbb |grep -P 'a.?b'
grep/egrep示例
grep -n 'root' /etc/passwd
grep -nv 'nologin' /etc/passwd
grep '[0-9]' /etc/inittab 符合0-9任意一個數字
grep -v '[0-9]' /etc/inittab
grep -v '^#' /etc/inittab ^# 符合以#號開頭
grep -v '^#' /etc/inittab|grep -v '^$' 不以#號開頭的行 ^$ 空行
grep '^[^a-zA-Z]' test.txt 非a-zA-Z 開頭的行(匹配以數字開頭的行)
grep 'r.o' test.txt .表示1個任意字符
grep 'oo*' test.txt *號左邊的字符匹配0次到屢次
grep '.' test.txt ’.’ 全部字符都會匹配
grep 'o{2}' /etc/passwd o出現2次
egrep 'o{2}' /etc/passwd o出現2次
egrep 'o{0,3}' /etc/passwd o{0,3}’ o出現 0-3次範圍
egrep 'o+' /etc/passwd +號前面字符1次或多
egrep 'oo?' /etc/passwd ?前面字符出現0或1次
egrep 'root|nologin' /etc/passwd 豎線 或者的意思
egrep '(oo){2}' /etc/passwd ()表明1個總體, oo出現2次
如下匹配序用grep -E 或者 erep 可不用脫意符號
‘o{2}’ o出現2次
‘o{0,3}’ o出現 0-3次範圍
‘(oo){2}’ ()表明1個總體, oo出現2次
‘o+’ +號前面字符1次或多
‘oo?’ ?前面字符出現0或1次
‘root|nologin’ 豎線 或者的意思