linux 模式表达式,linux正则表达式和扩展表达式
Centos的grep的正則表達(dá)式和擴(kuò)展表達(dá)式
日期2015.08.28 備注:其簡(jiǎn)述來(lái)自于馬哥課堂筆記
grep
grep是一個(gè)文本過(guò)濾工具根據(jù)用戶指定的“模式(pattern)”逐行去搜索目標(biāo)文本,打印匹配到的行;
模式:由正則表達(dá)式的元字符及文本字符所編寫的過(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: 忽略字符大小寫;
-o: 僅顯示能夠被模式匹配到的字符串;
-q: 靜默模式,匹配到什么也不顯示。
-E:使用擴(kuò)展的正則表達(dá)式;這里就不發(fā)圖了后面有演示。
基本正則表達(dá)式的元字符:
字符匹配:
.: 匹配任意單個(gè)字符;
[]:匹配指定范圍內(nèi)的任意單個(gè)字符;下圖中[a-z]和[a-c]匹配字符就不一樣,因?yàn)樽址秶煌?/p>
[^]:匹配不在指定范圍內(nèi)的任意單個(gè)字符;
[:lower:]:小寫字母
[:upper:]:大寫字符
[:space:]:空白字符
[:punct:]:標(biāo)點(diǎn)符號(hào)
[:alpha:]:大小寫字母;意思是所有的字母不分大小寫
[: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;
要寫成(C|c)at
說(shuō)了那么多我們還是一起來(lái)做寫練習(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)題。
- 上一篇: t430装Linux双系统,thinkp
- 下一篇: c语言求出字符串最长单词,C语言-获取字