正則表達式:Regual Expression REGEXP
由一類特殊字符及文本字符所編寫的模式,其中有些字符不表示其字母意義,而是用于表示控制或通配的功能;
分兩類:
基本正則表達式:BRE
擴展正則表達式:ERE
元字符:\(hello[[:space:]]\+\)+
grep:Global search Regular expression and print out the line.
作用:文本搜索工具,根據用戶指定的“模式(過濾條件)”對目標文本逐行進行匹配檢查;打印匹配到的行;
模式:由正則表達式的元字符及文本字符所編寫出的過濾條件;
正則表達式引擎:
grep [OPTIONS] PATTERN [FILE…]
grep [OPTIONS] [-e PATTERN | -f FILE] [FILE…]
OPTIONS:
—color=auto:對匹配到的文本著色后高亮顯示;
-i: ignorecase. 忽略字符的大小寫;
-o:僅顯示匹配到的字符串本身;
-v, -invert-match: 顯示不能被模式匹配到的行;
-E:支持使用擴展的正則表達式元字符
-q –quiet, –silent: 靜默模式,即不輸出任何信息;
-A #: after,后#行
-B#: before,前#行
-C#: context, 前后各#行
基本正則表達式元字符:
字符匹配:
. : 匹配任意單個字符
[] : 匹配指定范圍內的任意單個字符;
[^]: 匹配指定范圍外的任意單個字符
[:digit:]所有 數字 [:lower]所有的小寫字母
[:upper:]所有的大寫字母,[:alpha:]所有的字母。[:alnum:]包含數字的字母
[:punct:]所有標點符號的 [:space:]所有空白符號的
匹配次數:用在要指定其出現的次數的字符的后面,用于限制其前面字符出現的次數;默認工作與貪婪模式;
* :匹配其前面的字符任意次; 0, 1, 多次;
例如: grep"x*y"
abxy
aby
xxxxy yab 都匹配
。*:匹配任意長度的任意字符
\?: 匹配其前面的字符0次或者1次;即前面的字符是可有可無的;
\+: 匹配其前面的字符1次或多次; 即其前面的字符要出現至少1次;
\{m\}: 匹配其前面的字符m次:
\{m,n\}: 匹配前面字符至少m次,至多n次;
\{o,n}: 至多n次
\{m,\}: 至少m次
位置錨定:
^ :行首錨定;用于模式最左側、
$:行尾錨定;用于模式的最右側;
^PATTERN$: 用于PATTERN來匹配整行;
^$:空白行;
^[[:space:]]*$空白行包含空白字符行
單詞:非特殊字符組成的連續字符(字符串)都稱為單詞;
\<或\b:詞首錨定,用于單詞模式的左側;
\>或\b: 詞尾錨定,用于單詞模式的右側;
\<PATTERN\>: 匹配完整單詞;
分組及引用:
練習:
1、顯示/etc/passwd文件中不以/bin/bash結尾的行;
~]# grep -v/bin/bas$" /etc/passwd
,找出/etcpasswd文件中兩位數或三位數
~]# grep "\<[0-9]\{2,3}\>" /etc/passwd
3、找出/etc/rc.d/rc.sysinit或/etc/grub2.cfg文件中,以至少一個空白字符開頭,且后面非空白字符的行,
~]# grep "^[[:space:]]\+[^[:space:]]*$" /etc/grub2/cfg
4、找出“netstat -tan"命令的結果中以”LISTEN"后跟0、1或多個空白字符結尾的行;
~]# nestat -tan | grep "LISTEN[[:space:]]*$"
分組及引用
xy*ab
\(\): 將一個或多個字符捆綁在以前,當作一個整體進行處理;
\(xy\)*ab
Note: 分組括號中的模式匹配到的內容會被正則表達式引擎自動記錄于內容的變量中,這些變量為:
\1:模式從左側起,第一個左括號以及與之匹配的右括號之間的模式所匹配到的字符;
\2:模式從左側起,第二個左括號以及與之匹配的右括號之間的模式所匹配到的字符;
\3:模式從左側起,第三個左括號以及與之匹配的右括號之間的模式所匹配到的字符;
。。。。。
括號不能交叉,可以嵌套
He loves his lover.
He likes his liver.
She likes her liker.
She loves her liker.
~]# grep "\(l..e\).*\1" lovers.txt
后向引用: 引用前面的分組括號中的模式所匹配的字符;
原創文章,作者:shadow,如若轉載,請注明出處:http://www.www58058.com/57147
總結的不錯~能擴充點會更好~繼續加油~