linux運維正則表達式實戰視頻觀看地址
http://edu.51cto.com/course/course_id-1959.html
linux運維正則表達式實戰
html
1.什麼是正則表達式?
簡單的說,正則表達式就是一套處理大量的字符串而定義的規則和方法。
例如:假設 @表明12345
經過正則表達式這些特殊符號,咱們能夠快速的過濾、替換須要的內容。
linux正則通常以行爲單位處理的。linux
2.爲何要學習正則表達式?
再工做中,咱們作linux運維工做,時刻面對着大量的日誌,程序,命令的輸出。
迫切的須要過濾咱們須要的一部份內容,甚至是一個字符串。git
3.理解兩個誤區注意事項:
a.正則表達式的應用很是普遍,存在於各類語言中,PERL,PHP,JAVA等。
咱們今天給你們講解的就是linux的正則表達式,系統運維工做中經常使用的正則表達式
經常使用的正則表達式的命令爲grep(egrep),sed,awk。
linux的三劍客很牛,要想三劍客玩得更好,那就必定離不開正表達式。正則表達式
b.linux正則表達式和咱們命令行中其餘的命令使用的通配符是有本質區別的。express
4.實驗的3個注意事項:
a.linux正則通常以行爲單位處理的。
b.alias grep='grep --color=auto'
c.注意字符集,LC_ALL=C,不是必須bash
5.linux正則表達式細節
基於grep來說的。
基礎正則表達式:BRE(basic regular expression)
1)^word 表示搜索以word開頭的內容。
2)word$ 表示搜索以word結尾的內容。
3)^$ 表示空行,不是空格。
4). 表明且只能表明任意一個字符。(當前目錄,加載文件)
5)\ 轉義字符,讓有着特殊身份意義的字符,脫掉馬甲,還原原型。
例如:\.只表示小數點,還原原始小數點的意義。
6)* 重複0個或多個前面的一個字符。不表明全部了。
7).* 匹配全部的字符。^.* 任意多個字符開頭。
8)[abc] 匹配字符集合內任意一個字符[a-z]
9)[^abc] ^再中括號裏面表示非,不包含a或b或c。
10){n,m} 重複n到m次,前一個字符。
{n,} 至少N次,多了不限。
{n} N次
{,m} 至多m次,少了不限。
注意:grep 要對{轉義} \{\},egrep(grep -E)不須要轉義
基礎的正則就講完了。
6.grep命令參數小結
-v 排除匹配的內容
-E 支持擴展的正則表達式
-i 忽略大小寫
-o 只輸出匹配的內容
--color=auto 匹配的內容顯示顏色。
-n 再行首顯示行號運維
7.取IP地址練習正則:ide
sed基本語法:
s替換
g全局
-i 修改文件
-n 取消默認輸出
p 打印內容
-r 支持擴展正則linux運維
考題:
ifconfig eth0:
inet addr:10.0.0.7 Bcast:10.0.0.255 Mask:255.255.255.0
目標:10.0.0.7
過濾思想:
目標以前的內容「 inet addr:」 就用 ^.*addr:
目標結尾的內容" Bcast:10.0.0.255 Mask:255.255.255.0" 就用Bc.*$
命令實戰:
特殊直接sed取行*:
[root@oldboylinux oldboy]# ifconfig eth0|sed -n '2s#^.*addr:##gp'|sed 's# Bc.*$##g'
10.0.0.7
[root@oldboylinux oldboy]# ifconfig eth0|sed -n '2s#^.*addr:\(.*\) Bc.*$#\1#gp'
10.0.0.7
[root@B ~]# ifconfig eth0|sed -rn '2s#^.*addr:(.*) Bc.*$#\1#gp'
10.0.0.8
[root@oldboylinux oldboy]# ifconfig eth0|sed -n '2s#^.*addr:\([0-9]\{,3\}\.[0-9]\{,3\}\.[0-9]\{,3\}\.[0-9]\{,3\}\) Bc.*$#\1#gp'
10.0.0.7學習
考題:
請用ifconfig,輸出ip及廣播地址
sed -n 's#\(dddd\)\(ffff\)#\1\2#gp' 一樣適合grep。
命令:
[root@B ~]# ifconfig eth0|sed -nr 's#^.*dr:(.*) [a-zA-Z].*t:(.*) Ma.*$#\1\2#gp'
10.0.0.8 10.0.0.255
擴展的正則表達式:grep -E 以及egrep
後期有機會再分享吧!
下面是後補的,講座沒時間講了。
8.擴展的正則表達式:ERE1)+ 重複一個或一個以上前面的字符。2)? 重複0個或一個0前面的字符。3)|用或的方式查找多個符合的字符串4)() 找出 「用戶組」字符串。另一個瞭解的知識:posix方括號字符集(挺雞肋的知道就得) [:alnum:] [:lower:] [:xdigit:] [:alpha:] [:print:] [:blank:] [:blank:] [:punct:] [:cntrl:] [:space:] [:graph:] [::upper:]5)man bash man grep