正則表達式基礎

正則表達式正則表達式? ?

元字符:? ? ? ?

. ? ? ? 點表示任意單個字符 最少一次? ? ? ?

\w ? ? ?匹配字母、數字、下劃線、或漢字。? ? ? ?

\s ? ? ?匹配任意空白字符? ? ? ?

\d ? ? ?匹配數字? ? ? ?

\b ? ? ?匹配字符的開始或結束? ? ? ?

^ ? ? ? 匹配首字符? ? ? ?

$ ? ? ? 匹配末尾字符? ? ? ?

\ ? ? ? 轉義字符? ?

反義:? ? ? ?

\W ? ? ?匹配字母、數字、下劃線、或漢字。? ? ? ?

\S ? ? ?匹配任意空白字符? ? ? ?

\D ? ? ?匹配數字? ? ? ?

\B ? ? ?匹配字符的開始或結束? ? ? ?

[^n] ? ?匹配除了n的字符? ?

限定符:? ? ? ?

* ? ? ? 重復任意次? ? ? ?

+ ? ? ? 至少一次? ? ? ?

? ? ? ?重復0次或1次? ? ? ?

{n} ? ? 重復n次? ? ? ?

{n,} ? ?至少重復n次,無上線++ {,n} 至多重復n次,最少0次 (不重復)? ? ? ?

{n,m} ? 至少重復n次,至多重復m次。(字符重復n到m次)? ? ? ?

[1-9] ? 重復指定范圍內的字符? ? 貪婪與懶惰模式:? ? ? ?

*? ? ? 匹配任意字符(盡量少的次數)? ? ? ?

+? ? ? 重復一次或多次(盡量少的次數)? ? ? ?

?? ? ? ?重復0次或1次(盡量少的次數)? ? ? ?

{n,m}? ?重復n到m次(盡量少的次數)? ? ? ?

{n,}? ? 至少重復n次(盡量少的次數)

高級進階:? ? 捕獲:? ? ? ? (exp) ? ? ? ?

匹配括號里的字符(串),并自動保存到自動命名的組里? ? ? ?

(?<name>ex) ?匹配ex,并捕獲文本保存到名字為name的組里? ? ? ?

(?:exp) ? ? ?匹配exp 不捕獲文本,也不匹配組號? ?

零寬斷言:? ? ? ? (?=exp) ? ? ? 匹配exp前面的位置? ? ? ?

(?<=exp) ? ? ?匹配exp后面的位置? ? ? ?

(?<!exp) ? ? ?匹配后面非exp的位置? ? ? ?

(?<!exp) ? ? ?匹配前面非exp的位置? ? ? ?

shell不支持零寬斷言

實例:

1. 取出IP地址的方法?

a.

[root@yanghua shiyan]# ifconfig eth0|grep ‘inet addr’|sed ‘s/^.*addr://g’|sed ‘s/B.*//g’ 192.168.210.128 ?

正則匹配的秘籍: 匹配目標之前的內容時,用“^.*”任意字符開頭,結尾給出具體字符, 例如:

取IP

[root@yanghua shiyan]# ifconfig eth0|grep ‘inet addr’? ? ? ? ? inet addr:192.168.210.128 ?Bcast:192.168.210.255 ?Mask:255.255.255.0

匹配目標之后的內容時,用“.*$”任意字符結尾,開頭給出具字符。

[root@yanghua shiyan]# ?ifconfig eth0|grep ‘inet addr’|sed ‘s/^.*addr://g’ 192.168.210.128 ?Bcast:192.168.210.255 ?Mask:255.255.255.0
?b.

[root@yanghua shiyan]# ifconfig eth0|sed -rn ‘s/^.*r:(.*) ?Bc.*/\1/p’ 192.168.210.128 此處用到了Sed的高級用法:捕獲功能 (exp) ? ? ? ? 匹配括號里的字符(串),并自動保存到自動命名的組里 但是要注意格式:

sed -n -r s/(exp)正則/默認的組’\1 \2’/p’命令’
?c.

sed超復雜用法:(僅供參考)

[root@yanghua shiyan]# ifconfig eth0|sed -rn ‘s/^.*r:([0-9]{,3}.[0-9]{,3}.[0-9]{,3}.[0-9]{,3}) ?Bc.*/\1/p’ 192.168.210.128
?實戰:取出IP和網關

[root@yanghua ~]# ifconfig eth0 eth0 ? ? ?

Link encap:Ethernet ?HWaddr 00:0C:29:14:DD:D3 ? inet addr:192.168.210.128 ?Bcast:192.168.210.255 ?Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe14:ddd3/64 Scope:Link UP BROADCAST RUNNING MULTICAST ?MTU:1500 ?Metric:1 RX packets:3494 errors:0 dropped:0 overruns:0 frame:0 TX packets:2214 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000? RX bytes:306833 (299.6 KiB) ?TX bytes:234127 (228.6 KiB) Interrupt:19 Base address:0x2000?

[root@yanghua shiyan]# ifconfig eth0|sed -r -n ‘s/^.*r:(.*) ?Bcast:(.*) ?Ma.*/\1\n\2/p’ 192.168.210.128 192.168.210.255

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/88394

(0)
小白Linux小白Linux
上一篇 2017-11-14
下一篇 2017-11-14

相關推薦

  • M20-1 8月5號作業

    作業:    1、取本機IP地址;    2、取各分區利用率的數值;    3、統計/etc/init.d/functions 文件中每個單詞出現的次數,并按頻率從高到低顯示;    4、/etc/rc.d/init.d/functions或/etc/rc.d/init.d/fu…

    Linux干貨 2016-08-15
  • 為你的網絡傳輸加把鎖(OpenSSL)

    互聯網形成的初期,更多關注的是設備之間通過網絡相互訪問功能的實現,我們都知道,兩個設備之間要想相互通信,就必需遵循某種協議,于是早期的互聯網也出現來眾多的協議,比如傳輸層最著名的協議就是tcp和udp,而應用層比較著名的協議有:http、ftp、pop、smtp、dns、telnet等等,而這些協議這開發初期,更多是關注功能的實現,數據這網絡上傳輸是明文方式…

    Linux干貨 2015-12-06
  • iptables入門到進階

    netfilter/iptables:        netfilter是存在于內核中的一個防火墻框架,用來管理網絡數據包,netfilter在IP數據包處理流程中的5個關鍵位置放置了5個鉤子(hook)函數,當數據包流經相應的位置時,相應的鉤子函數會被調用,每個對應的鉤子上有對應的表,表中有對應的…

    Linux干貨 2017-05-02
  • 8-2 用戶組和權限管理

    用戶組和權限管理     本節主要是:su、passwd、chage、chown、chgrp、chmod、umask等命令及文件的三種普通權限和三種特殊權限     切換用戶或以其他用戶身份執行命令:su su [options…] [-] [user[args…]] 切換用…

    Linux干貨 2016-08-07
  • 馬哥M20-1第一周作業

    作業1:通過echo實現字體閃爍,添加下劃線,改變顏色      (1)添加下劃線    (2)字體閃爍   (3)改變顏色 作業2:顯示前10天的年月日 作業3:screen的使用

    Linux干貨 2016-07-29
  • 馬哥教育網絡班21期+第17周課程練習

    1、結合圖形描述LVS的工作原理; lvs是基于內核的虛擬主機用來做四層的負載均衡,工作在netfilter框架的INPUT鏈上,有四種模式,上圖為lvs-nat lvs-nat:有DNAT功能,支持端口映射,請求報文和響應報文都需要經過Director 請求過程:cip–>vip,Director,cip–>rip 響應…

    Linux干貨 2016-12-26
欧美性久久久久