日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > linux >内容正文

linux

linux 模式表达式,linux正则表达式和扩展表达式

發(fā)布時(shí)間:2025/1/21 linux 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux 模式表达式,linux正则表达式和扩展表达式 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Centos的grep的正則表達(dá)式和擴(kuò)展表達(dá)式

日期2015.08.28 備注:其簡(jiǎn)述來(lái)自于馬哥課堂筆記

grep

grep是一個(gè)文本過(guò)濾工具根據(jù)用戶指定的“模式(pattern)”逐行去搜索目標(biāo)文本,打印匹配到的行;

模式:由正則表達(dá)式的元字符及文本字符所編寫(xiě)的過(guò)濾條件;

其中,元字符:字符不表示其字面意義,而用于表示通配或控制功能

grep分為兩類

基本的正則表達(dá)式:BRE

擴(kuò)展的正則表達(dá)式:ERE

grep?使用格式

grep? [選項(xiàng)]?? 模式? [文件]

其常用選項(xiàng)有

--color=auto:對(duì)匹配到的串做高亮顯示;?備注:--color?默認(rèn)的命令別名中已經(jīng)定義了grep=grep --color了

加上--color

-v:顯示模式匹配不到行;

-i: 忽略字符大小寫(xiě);

-o: 僅顯示能夠被模式匹配到的字符串;

-q: 靜默模式,匹配到什么也不顯示。

-E:使用擴(kuò)展的正則表達(dá)式;這里就不發(fā)圖了后面有演示。

基本正則表達(dá)式的元字符:

字符匹配:

.: 匹配任意單個(gè)字符;

[]:匹配指定范圍內(nèi)的任意單個(gè)字符;下圖中[a-z]和[a-c]匹配字符就不一樣,因?yàn)樽址秶煌?/p>

[^]:匹配不在指定范圍內(nèi)的任意單個(gè)字符;

[:lower:]:小寫(xiě)字母

[:upper:]:大寫(xiě)字符

[:space:]:空白字符

[:punct:]:標(biāo)點(diǎn)符號(hào)

[:alpha:]:大小寫(xiě)字母;意思是所有的字母不分大小寫(xiě)

[:digit:]:數(shù)字

次數(shù)匹配:用于要指定其次數(shù)的字符的后面,表示指定其前面的字符

*: 任意次

\?:0或1次

\+:1或多次

\{m\}:精確限制為m次

\{m,n\}: 至少m次,至多n次,[m,n]

\{0,n\}:至多n次,少了可以沒(méi)有

\{m,\}:至少m次,多則不限

.*: 匹配任意長(zhǎng)度的任意字符

以上命令總結(jié)如下圖:

位置錨定:

^: 行首錨定;用于模式的最左側(cè);

$: 行尾錨定;用于模式的最右側(cè);?注意,在Centos7后$來(lái)錨定行尾的時(shí)候要使用單引號(hào)。

\

\>, \b:詞尾錨定;用于表示單詞的模式的右側(cè);

^$: 空白行;我們使用管道和wc -l?來(lái)統(tǒng)計(jì)匹配到的空白行?如下圖:

分組:\(\)

分組的小括號(hào)中的模式匹配到的內(nèi)容,會(huì)在執(zhí)行過(guò)程中被正則表達(dá)式引擎記錄下來(lái),并保存內(nèi)置的變量????? 中;這些變量分別是\1, \2, ...

\1: 從左側(cè)起,第一個(gè)左括號(hào),以及與之配對(duì)的右括號(hào)中間的模式所匹配到的內(nèi)容;

\2:從左側(cè)起,第二個(gè)左括號(hào),以及與之配對(duì)的右括號(hào)中間的模式所匹配到的內(nèi)容;?? ??? ??? ??? ??? ?...

后向引用:使用變量引用前面的分組括號(hào)中的模式所匹配到的字符;

擴(kuò)展的正則表達(dá)式:

grep家庭有三個(gè)命令:

grep:基本正則表達(dá)式

-E: 擴(kuò)展正則表達(dá)式

-F:不支持正則表達(dá)式

egrep:擴(kuò)展正則表達(dá)式

fgrep:不支持正則表達(dá)式

擴(kuò)展正則表達(dá)式的元字符

字符匹配:

.: 任意單個(gè)字符

[]:指定范圍內(nèi)的任意單個(gè)字符

[^]:不在指定范圍內(nèi)的任意單個(gè)字符

次數(shù)匹配:

.*:匹配任意字符

*:匹配任意字符

?:0次或1次;

+:1次以上;

{m}:精確匹配m次;

{m,n}:至少m次,至多n次;

{0,n}:至多n次,少了可以沒(méi)有

{m,}:至少m次,多則不限

位置錨定:

^: 錨定行首

$: 錨定行尾

\

\>, \b:詞尾錨定;用于表示單詞的模式的右側(cè);

^$: 空白行

分組:()

后向引用:\1, \2, ...

以上擴(kuò)展正則表達(dá)式和正則表達(dá)式使用方法差不多在這里就不一一截圖了。

或者:

a|b

C|cat: 不表示Cat或cat,而表示C或cat;

要寫(xiě)成(C|c)at

說(shuō)了那么多我們還是一起來(lái)做寫(xiě)練習(xí)吧!

使用正則表達(dá)式和擴(kuò)展表達(dá)式實(shí)現(xiàn)以下功能:

1、顯示/etc/passwd文件中以bash結(jié)尾的行;

答案如下圖:

擴(kuò)展表達(dá)式則是,如下圖:

2、顯示/etc/passwd文件中的兩位數(shù)或三位數(shù);如下圖

擴(kuò)展表達(dá)式,如下圖:

3、顯示'netstat -tan'命令結(jié)果中以‘LISTEN’后跟0個(gè)、1個(gè)或多個(gè)空白字符結(jié)尾的行;如下圖:

擴(kuò)展表達(dá)式?如下圖:

4、添加用戶bash,testbash, basher以及nologin用戶(nologin用戶的shell為/sbin/nologin),并找出??? shell和用戶一樣的用戶

擴(kuò)展表達(dá)式

使用擴(kuò)展正則表達(dá)式實(shí)現(xiàn)以下功能

1、顯示當(dāng)前系統(tǒng)上root、centos或user1用戶的默認(rèn)的shell和UID;

2、找出/etc/rc.d/init.d/functions文件中某單詞(單詞中間可以存在下劃線)后面跟著一組小括號(hào)的行;

3、使用echo輸出一個(gè)路徑,而后egrep找出其路徑基名;

進(jìn)一步地:使用egrep取出其目錄名;

? 4、找出ifconfig命令執(zhí)行結(jié)果中1-255之間的數(shù)字;

總結(jié)

以上是生活随笔為你收集整理的linux 模式表达式,linux正则表达式和扩展表达式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。