#Linux grep與正則表達式淺析
##grep
grep(global search regular expression(RE) and print out the line,全面搜索正則表達式并把行打印出來)是一種強大的文本搜索工具,它能使用正則表達式搜索文本,并把匹配的行打印出來。
###grep語法
grep [options] pattern [file…]
options:
-v:對搜索內容取反
-i:搜索時忽略大小寫
-n:顯示搜索內容的行號
-o:只顯示匹配到的內容
-q:靜默模式,不輸出信息(常用于腳本,使用echo $?判斷,echo $?返回值位0時證明grep命令匹配已到模式字符,非零1~255匹配失敗)
-e:指定多個pattern
-A#:顯示匹配pattern后#行內容
-B#:顯示匹配pattern前#行內容
-C#:顯示匹配pattern前后各#行內容
-E:支持擴展表達式
##基本正則表達式元字符
###字符匹配
. :匹配任意單個字符
[]:匹配中括號范圍內的任意單個字符
[^]:匹配中括號范圍外的任意單個字符
[:alpha:]:匹配任意大小寫字母
[:alnum:]:匹配字母與數字
[:lower:]:匹配任意小寫字母
[:upper:]:匹配任意大寫字母
[:space:]:匹配空格
[:digit:]:匹配十進制數字
[:punct:]:匹配標點符號
###次數匹配
* :匹配前字符任意次,0,1,……
.*:匹配任意長度任意字符
\?:匹配前字符0次或1次
\+:匹配前字符1次至無限次(至少1次)
\{n\}:匹配前字符n次
\{n,m\}:匹配前字符至少n次,至多m次
\{n,\}:匹配前字符至少n次,
\{,m\}:匹配前字符至多m次
###位置錨定
^ :錨定行首
$ :錨定行尾
^$ :表示空行,^[[:space:]]\+$:空白行
\<或\b:錨定詞首
\>或\b:錨定詞尾
注:\b:位置決定錨定詞首或詞尾
###分組及引用
\( \):將一個或多個字符"捆綁"成分組,后向使用變量\1引用(可按分組數引用對應變量,引用的是匹配到的字符而非匹配模式)
最后一條命令:查找/etc/passwd文件同行中出現同一單詞出現兩次的行
##擴展正則表達式元字符
###字符匹配
與基本正則表達式相同(使用方法與基本正則表達式相同)
###次數匹配
* :匹配前字符任意次,0,1,……(使用方法與基本正則表達式相同)
.*:匹配任意長度任意字符,(使用方法與基本正則表達式相同)
?:匹配前字符0次或1次,(使用方法與基本正則表達式相同,以此為例)
+:匹配前字符1次至無限次(至少1次),(使用方法與基本正則表達式相同,)
{n}:匹配前字符n次,(使用方法與基本正則表達式相同)
{n,m}:匹配前字符至少n次,至多m次,(使用方法與基本正則表達式相同)
{n,}:匹配前字符至少n次,(使用方法與基本正則表達式相同)
{,m}:匹配前字符至多m次,(使用方法與基本正則表達式相同)
###位置錨定
與基本正則表達式相同,(使用方法與基本正則表達式相同)
###分組引用
():擴展正則表達式分組不需要對其轉義,使用和基本正則表達式相同
###其他
在基本正則表達式模式匹配時使用或(|)需要對其轉義(前面加\),擴展正則表達式模式匹配時使用或(|)不需要對其轉義。
配圖為常用選擇。
原創文章,作者:wangy,如若轉載,請注明出處:http://www.www58058.com/72629