Linux基礎之正則表達式

正則表示式語法及在grep命令中的引用

1、grep: Global search REgular expression and Print out tht line

文本搜索工具,根據用戶指定的模式對目標文本進行逐行匹配檢查;打印匹配到的行

模式:由正則表達式字符及文本字符所編寫的過濾條件

選項:

  • –color=auto 對匹配到的文本著色顯示
  • -v 顯示沒有被匹配到的行
  • -i 忽略大小寫匹配
  • -n 顯示匹配到的行號
  • -c 統計匹配到的行總數
  • -o 僅顯示匹配到的字符串
  • -q 靜默模式,不輸出任何信息
  • -A #: 同時顯示匹配行后的#行
  • -B #: 同時顯示匹配行前的#行
  • -C #: 同時顯示匹配行前后的#行
  • -e 實現多選項之間的邏輯或關系(grep -e ‘cat’ -e ‘dog’ file)
  • -w 匹配整個單詞 -E egrep -F fgrep

2、正則表達式

規則查看: man 7 regex

元字符分類:字符匹配、匹配次數、位置、分組

字符匹配:

  • . 匹配任意單個字符
  • [] 匹配指定范圍內的任意單個字符? ?[^] 匹配指定范圍外的任意單個字符
    1. [:lower:] 小寫字母
    2. [:upper:]
    3. [:alpha:]
    4. [:digit:] 十進制數字
    5. [:alnum:] 字母和數字
    6. [:xdigit:] 十六進制數字
    7. [:blank:] 空白字符(空格和制表符)
    8. [:space:] 水平和垂直的空白字符
    9. [:cntrl:] 不可打印的控制字符
    10. [:graph:] 可打印的非空白字符
    11. [:print:] 可打印字符
    12. [:punct:] 標點符號

匹配次數:

  • * 匹配前面的字符任意次,貪婪模式:盡可能長的匹配 (.* 匹配任意長度的任何字符)
  • \? 匹配前面的字符0或1次
  • \+ 匹配前面的字符至少一次
  • \{n\} 匹配前面的字符n次? \{n,m\} 匹配前面的字符n-m次? \{,m\}? \{n,\}

位置錨定:定位字符出現的位置

  • ^ 行首;$ 行尾 (^$ 空白行; ^pattern$ 模式匹配整行 ;^[[:space:]]$ 空白行)
  • \<或者\b 詞首錨定,用于單詞模式的左側
  • \<或者\b 詞尾錨定,用于單詞模式的右側;單詞邊界:除了字母、數字、下劃線_ (\<pattern\> 匹配整個單詞)

分組: \(pattern\),將括號中的模式當作一組進行處理。分組括號中的模式匹配到的內容會被正則表式引擎記錄于內部的變量中,這些變量的命名方式為:\1 \2 \3 。\1 表示從左側起第一個左括號以及與之匹配的右括號之間的內容

后向引用:引用前面分組括號中模式匹配到的內容,并非模式本身

邏輯: \| 或

示例: 用到正則表達式的匹配模式需要用引號引起來

1、獲得本機的ip地址

  • ifconfig eth0|grep “inet addr”|egrep -o “([[:digit:]]{1,3}\.){3}[[:digit:]]{1,3}”|head -1
  • ifconfig eth0|grep “inet addr”|egrep -o “.*Bcast:”|egrep -o “\b[[:digit:]\.]*\b”
  • 更準確的取法: ifconfig eth0|grep “inet addr”|egrep -o “(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])”

2、查找centos6中的系統用戶,輸出起用戶名和uid

  • cut -d: -f1,3 /etc/passwd|grep -E “(\b[0-9]|[1-9][0-9]|[1-4][0-9][0-9])$”

3、查找centos系統的主版本號:

  • grep -o ” [0-9]” /etc/centos-release|tr -d? ” “

4、找出//etc/passwd中用戶名和shell同名的行

  • grep ‘^\([^:]*\)\b.*\/\1$’ /etc/passwd

5、取路徑的基名

  • echo “/etc/rc.d/init.d/” |egrep -o “[^/]*/?$”|tr -d “/”

6、取路徑名

  • echo “/etc/rc.d/init.d/” |egrep -o “.*[^/]+”|egrep -o “.*/”|egrep -o “.*[^/]+”

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

(0)
WadirumWadirum
上一篇 2017-09-09 16:50
下一篇 2017-09-09 18:22

相關推薦

  • linux基礎

    1.計算機的組成及其功能。 計算機的主要組成部分可以歸納為以下五個部分:控制器、運算器、存儲器、輸入設備、和輸出設備。 控制器 是整個計算機的中樞神經,其功能是對程序規定的控制信息進行解釋,根據其要求進行控制,調度程序、數據、地址,協調計算機各部分工作及內存與外設的訪問等。 運算器 運算器的功能是對數據進行各種算術運算…

    Linux干貨 2016-08-15
  • 學習linux第四天

    Linux學習第4天   Linux內部命令和外部命令    內部命令:實際上是shell程序的一部分,其中包含的是一些比較簡單的linux系統命令,這些命令由shell程序識別并在shell程序內部完成運行,通常在linux系統加載運行時shell就被加載并駐留在系統內存中。內部命令是寫在bashy源碼里面的,其執行速度比外部…

    Linux干貨 2016-10-29
  • Linux系統管理基礎

        一、Linux系統初識             1、用戶界面           &nbsp…

    Linux干貨 2015-04-14
  • CentOS 5和6的啟動流程

    Linux: kernel+rootfs  kernel: 進程管理、內存管理、網絡管理、驅動程序、文件系統、安全功能 rootfs: glibc 庫:函數集合, function, 調用接口 過程調用:procedure 函數調用:function 程序  內核設計流派: 單內核設計:Linux 把所有功能集成于同一個程序; 微內核設計…

    Linux干貨 2016-08-23
  • 馬哥教育網絡班21期+第10周課程練習

    1、請詳細描述CentOS系統的啟動流程(詳細到每個過程系統做了哪些事情) POST:加電自檢,主板檢測系統硬件。 BOOT sequence:依次查找引導設備(裝有引導程序) MBR:找到引導設備的主引導扇區引導記錄(446k bootloader 64k DPT 2k 結束標志) GRUB: 引導程序的一種,提供一個菜單,允許用戶選擇要啟動系統或不同的內…

    Linux干貨 2016-08-15
欧美性久久久久