您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關(guān)Linux如何使用正則表達式,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
我們可以使用 grep 命令來測試我們的正則表達式,grep命令使用正則表達式去嘗試匹配指定文件的每一行,并將至少有一處匹配表達式的所有行顯示出來。
grep 命令說明:
常用的選項OPTION:
-c 顯示匹配到的行數(shù)之和 -o 僅顯示匹配本身 -v 顯示非匹配,取反 -i 不區(qū)分大小寫 -E 支持擴展表達式 -q 靜默模式 -n 顯示匹配到的行的行號 -A 2 顯示匹配到的行的后2行 -B 2 顯示匹配到的行的前2行 -C 2 顯示匹配到的行的前后2行 -V 顯示版本信息
grep “[匹配字符]匹配出現(xiàn)次數(shù)” /PATH/TO/SOMEFILE
字符匹配:
. 任意單個字符 [] 指定范圍內(nèi)的單個字符 [^] 指定范圍外的的單個字符,取反 .* 任意長度的任意字符 [:alnum:] 所有的字母和數(shù)字 [:alpha:] 所有的字母 [:blank:] 所有呈水平排列的空白字符 [:cntrl:] 所有的控制字符 [:digit:] 所有的數(shù)字 [:graph:] 所有的可打印字符,不包括空格 [:lower:] 所有的小寫字母 [:print:] 所有的可打印字符,包括空格 [:punct:] 所有的標點字符 [:space:] 所有呈水平或垂直排列的空白字符 [:upper:] 所有的大寫字母 [:xdigit:] 所有的十六進制數(shù) [=字符=] 所有和指定字符相等的字符
匹配次數(shù) :
* 其前面的字符出現(xiàn)任意次,0次或1次,或者多次 \? 其前面的字符出現(xiàn)0次或1次 \+ 其前面的字符出現(xiàn)1次或多次,至少出現(xiàn)1次 \{m\} 指定字符出現(xiàn)次數(shù) \{m,n\} 至少出現(xiàn)m次,至多出現(xiàn)n次,范圍取次 \{0,n\} 出現(xiàn)最多n次 \{m,\} 出現(xiàn)最少m次
位置錨定:
^ 行首錨定,用于模式的最左側(cè) $ 行尾錨定,用于模式的最右側(cè) ^……$ 整行, ^$ 空白行,^[[:space:]]*$ 空行或者有空白字符的行 \ 或 \b 詞尾錨定 \ 精確錨定單詞
分組及引用:
\{xy\}*ab 表示多個字符出現(xiàn)0,1或多次。 \ 在這里作為轉(zhuǎn)義符使用 \(abcd\){1,3} 表示包含abcd字符串最少出現(xiàn)1次,最多出現(xiàn)3次 \(1..2\).* \1 \1 是指引用從左側(cè)起第一個()之間的字符 \(1..2\).* \(3..4\)\2 \2 是指引用從左側(cè)起第二個()之間的字符 \(1..2\).* \(3..4\).*\(5..6\)\3 \3 是指引用從左側(cè)起第三個()之間的字符
使用實例:
查看顯示 /etc/fstab 文件以 # 注釋開頭的行:
這里也可以不加【】:
-v 取反,即顯示不以#注釋的行,-o 選項為只顯示匹配到的字符串:
顯示 /etc/fstab 文件非注釋的行,錨定行首為 # 注釋的行,取反:
顯示 /etc/fstab 文件以#號開頭,后面跟一個空格,后面為任意長度任意字符的行, -c 選項可以統(tǒng)計匹配到的行數(shù):
在 /tmp/fstab 文件中加入多個空白行,以#號開頭,后面僅跟一個空格,且不以空白符結(jié)尾的行:
顯示 /tmp/sshd_config 文件中不以#注釋、空白行以及有空白字符的行:
顯示 /etc/passwd 文件中用戶名和用戶SHELL為一樣的行:
顯示 /tmp 目錄下,以非字母開頭,后面跟一個字母,后面為任意長度任意字符的文件或者目錄:
顯示 /tmp 目錄下以非字母開頭,后面僅跟一個字母,然后以非字母結(jié)尾的文件和目錄:
顯示 /etc 目錄下以p開頭不以數(shù)字結(jié)尾的所有文件和目錄:
顯示 ip a 或者 ifconfig 命令中的IP地址,-E 選項為支持擴展正則表達式:
-l 選項可以列出包含字符串的文件列表:
-w 精確錨定字符串,相當于 :
egrep 的使用方法跟 grep 基本一致,不需要轉(zhuǎn)義符 \ 看起來更簡潔:
關(guān)于“Linux如何使用正則表達式”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。