溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Linux如何使用正則表達式

發(fā)布時間:2022-03-05 09:26:47 來源:億速云 閱讀:257 作者:小新 欄目:開發(fā)技術(shù)

這篇文章將為大家詳細講解有關(guān)Linux如何使用正則表達式,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

我們可以使用 grep 命令來測試我們的正則表達式,grep命令使用正則表達式去嘗試匹配指定文件的每一行,并將至少有一處匹配表達式的所有行顯示出來。

grep 命令說明:

Linux如何使用正則表達式

常用的選項OPTION:

-c 顯示匹配到的行數(shù)之和

-o 僅顯示匹配本身

-v 顯示非匹配,取反

-i 不區(qū)分大小寫

-E 支持擴展表達式

-q 靜默模式

-n 顯示匹配到的行的行號

-A 2 顯示匹配到的行的后2行

-B 2 顯示匹配到的行的前2行

-C 2 顯示匹配到的行的前后2行

-V 顯示版本信息

使用語法:

grep [OPTION]… PATTERN [FILE]…

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 文件以 # 注釋開頭的行:

Linux如何使用正則表達式

這里也可以不加【】:

Linux如何使用正則表達式

-v 取反,即顯示不以#注釋的行,-o 選項為只顯示匹配到的字符串:

Linux如何使用正則表達式

顯示 /etc/fstab 文件非注釋的行,錨定行首為 # 注釋的行,取反:

Linux如何使用正則表達式

顯示 /etc/fstab 文件以#號開頭,后面跟一個空格,后面為任意長度任意字符的行, -c 選項可以統(tǒng)計匹配到的行數(shù):

Linux如何使用正則表達式

在 /tmp/fstab 文件中加入多個空白行,以#號開頭,后面僅跟一個空格,且不以空白符結(jié)尾的行:

Linux如何使用正則表達式

顯示 /tmp/sshd_config 文件中不以#注釋、空白行以及有空白字符的行:

Linux如何使用正則表達式

顯示 /etc/passwd 文件中用戶名和用戶SHELL為一樣的行:

Linux如何使用正則表達式

顯示 /tmp 目錄下,以非字母開頭,后面跟一個字母,后面為任意長度任意字符的文件或者目錄:

Linux如何使用正則表達式

顯示 /tmp 目錄下以非字母開頭,后面僅跟一個字母,然后以非字母結(jié)尾的文件和目錄:

Linux如何使用正則表達式

顯示 /etc 目錄下以p開頭不以數(shù)字結(jié)尾的所有文件和目錄:

Linux如何使用正則表達式

顯示 ip a 或者 ifconfig 命令中的IP地址,-E 選項為支持擴展正則表達式:

Linux如何使用正則表達式

-l 選項可以列出包含字符串的文件列表:

Linux如何使用正則表達式

-w 精確錨定字符串,相當于 :

Linux如何使用正則表達式

egrep 的使用方法跟 grep 基本一致,不需要轉(zhuǎn)義符 \ 看起來更簡潔:

Linux如何使用正則表達式

關(guān)于“Linux如何使用正則表達式”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(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)容。

AI