何謂正規表示式
正規表示式,又稱正規表示法、常規表示法(regular expression,在**中常簡寫為regex、regexp或re),是一類字元所書寫的模式,其中許多字元不表示其字面意義,而是表達控制或通配等功能。正規表示式使用單個字串來描述、匹配一系列符合某個句法規則的字串。在很多文字編輯器裡,正規表示式通常被用來檢索、替換那些符合某個模式的文字。許多程式語言都支援利用正規表示式進行字串操作。
正規表示式語言由兩種基本字元型別組成:原義(正常)文字字元和元字元。元字元使正規表示式具有處理能力。所謂元字元就是指那些在正規表示式中具有特殊意義的專用字元,不表示其字面意義,而用於額外功能性描述。
正規表示式分類
正規表示式根據元字元的數量及功能不同又分為基本正規表示式(grep)和拓展正規表示式(egrep)。而grep和egrep同屬於文字搜尋工具,可根據使用者指定的文字模式(搜尋條件)對目標檔案進行逐行搜尋,顯示能匹配到的行。用法上grep –e等同於egrep,與grep和egrep相似的文字搜尋工具還有fgrep,因不支援使用正規表示式,所以不再單獨介紹。
基本正規表示式(grep)
語法格式:grep[option]... 'pattern' file...
基本正規表示式元字元:
1.字元匹配:
.:任意單個字元
[ ]:匹配指定範圍內的任意單個字元
[0-9]:匹配單個數字
[a-z]:匹配單個小寫字母
[a-z]:匹配單個大寫字母
[[:digit:]]:匹配單個數字
[[:lower:]]:匹配單個小寫字母
[[:upper:]]:匹配單個大寫字母
[[:space:]]:匹配單個空白字元
[[:punct:]]:匹配單個標點符號
[[:alnum:]]:匹配單個字母或數字
[[:alpha:]]:匹配單個字母(不分大小寫)
[^]:匹配範圍外的任意單個字元
2.次數匹配:
*:任意次(前面字元出現任意次)
\?:0次或1次(前面字元可有可無)
\: m次(前面字元出現m次)
\:至少m次,至多n次
\:至少m次
\:至多n次
.*:任意長度的任意字元
3.位置錨定:
^:行首錨定(寫在模式最左側)
$:行尾錨定(寫在模式最右側)
^$:空白行
\\>,/b:詞尾錨定(出現於單詞右側)
(注:不包含特殊字元的連續字元組成的串叫單詞)
4.分組
\( \):如\(ab\)*
(分組中的模式匹配到的內容,可由正規表示式引擎記憶在記憶體中,之後可被引用)
5.引用
\n:引用前面的第n個左括號以及與之對應的右括號中的模式所匹配到的內容
拓展正規表示式(egrep)
語法格式:egrep [option] 'pattern' file...
拓展正規表示式元字元:
1.字元匹配:2.次數匹配:.:任意單個字元
[ ]:匹配範圍內的任意單個字元
[^]:匹配範圍外的任意單個字元
*:任意次
?: 0或1次
+:至少1次
: m次
:至少m次,至多n次
:至少m次
:至多n次
3.位置錨定:
^:行首錨定
$:行尾錨定
\\>,\b:詞尾錨定
^$,^[[:space:]]*$:空白行
4.分組:
( ):分組
12347|:或
5.引用:
\n:引用前面的第n個左括號以及與之對應的右括號中的模式所匹配到的內容
grep及egrep命令選項
-v: 反向選取
-o:僅顯示匹配的字串,而非字串所在的行
-i:ignore-case,忽略字元大小寫
-a:顯示之後兩行
-b:顯示之前兩行
-c:顯示上下兩行
用法
顯示/proc/meminfo檔案中以大寫或小寫s開頭的行
顯示/etc/passwd檔案中其預設shell為非/sbin/nologin的使用者
顯示/etc/passwd檔案中其預設shell為/bin/bash的使用者中id號最大的使用者
找出/etc/passwd檔案中的一位數或兩位數
顯示/boot/grub/grub.conf中以至少乙個空白字元開頭的行
顯示/etc/rc.d/rc.sysinit檔案中,以#開頭,後面跟至少乙個空白字元,而後又有至少乙個非空白字元的行
找出netstat -tan命令執行結果中以'listen'結尾的行
找出當前系統上其使用者名稱和預設shell相同的使用者
顯示當前系統上root或scholar使用者的預設shell12
找出/etc/rc.d/init.d/functions檔案中某單詞後跟一組小括號「()」行
使用echo命令輸出乙個路徑,而後使用grep取出其基名
找出ifconfig命令結果中的1-255之間的數字
來自為知筆記(wiz)
Linux操作 grep egrep工具的使用
命令格式 grep cinvabc word filename,常用選項如下 說明 前面的數字顯示為綠色,表示行號。說明 只要有乙個數字就算匹配到了。說明 只要包含乙個數字,就不顯示。說明 這裡面是包含有空行的。在正規表示式中,表示行的開始,表示行的結尾,表示空行。如何列印出不以英文本母開頭的行?示...
grep,egrep,正規表示式
1 顯示 proc meminfo檔案中以大小s開頭的行 要求 使用兩種方法 grep s s proc meminfo grep s s proc meminfo cat proc meminfo grep i s cat proc meminfo grep 1 grep e s e s proc...
Grep egrep 與正規表示式
grep egrep 與正規表示式 原始出處 作者資訊和本宣告。否則將追究法律責任。首先要記住的是 正規表示式與萬用字元不一樣,它們表示的含義並不相同 正規表示式只是一種表示法,只要工具支援這種表示法,那麼該工具就可以處理正規表示式的字串。vim grep awk sed 都支援正規表示式,也正是因...