正則表達式基礎

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

元字符:? ? ? ?

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

\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 00:32
下一篇 2017-11-14 14:16

相關推薦

  • N25第九周作業

    1、寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);分別這兩類用戶的個數;通過字符串比較來實現; #!/bin/bash declare -a usersh nologin=0 login=0 usersh=($(cut -d’:’ -f7 /etc/passwd)) ##數組賦值時需…

    Linux干貨 2017-03-04
  • 淺談編譯kernel+busybox構建擁有遠程ssh登錄和web功能最小linux系統(一)

    實驗環境win7+VM11.1 大致過程總攬 1,硬件準備以及查看硬件設備型號(不用擔心,這些都是VM虛擬出來的) 2,編譯環境的配置以及下載內核源碼以及編譯內核 3,編譯busybox,以及提供系統正常運行的配置文件,初步運行linux系統 4,編譯安裝dropbear提供ssh服務 5,安裝nginx;提供web服務 一,硬件準備以及查看硬件設備型號 由…

    Linux干貨 2015-09-22
  • TCP詳解

    TCP協議詳解   TCP/IP協議不是TCP和IP這兩個協議的合稱,而是指因特網整個使用TCP/IP協議的協議集合。他取代了OSI七層模型,成為事實上的應用于實際的模型。 TCP/IP協議與OSI協議的關系如下:   各層的作用如下: TCP特性: 工作在傳輸層面向連接協議 全雙工協議 半關閉 錯誤檢查 將數據打包成段,排序 確認機制 …

    2017-09-02
  • DNS服務和搭建

    DNS服務:        名字解析        DNS 服務        實現主從服務器        實現子域        實現view  …

    2017-04-16
  • Linux終端類型

    在linux系統中,用戶經常要使用各種終端和操作系統進行交互,實現用戶的任務。Linux各種終端的工作方式基本都通過字符命令行的方式完成,通過終端輸入命令完成相應結果。通過who命令可查看用戶通過哪些終端方式連接到操作系統。通過tty命令查看當前是通過第幾個tty登錄的。 Linux系統的終端包含如下幾種類型: 1) 物理終端 物理終端,又稱控制臺…

    Linux干貨 2016-10-17
  • 第十七周作業

    1、結合圖形來描敘LVS的工作原理; 工作原理 LVS分為兩個組件:ipvs和ipvsadm         ipvs:工作于內核空間,主要用于使用戶定義的策略生效;         ipvsadm : 工作于用戶空間,主要用于用戶定義和管理集群服務…

    2017-06-27
欧美性久久久久