grep、egrep正則表達式之初窺門徑

何謂正則表達式

正則表達式,又稱正規表示法、常規表示法(Regular Expression,在代碼中常簡寫為regex、regexp或RE),是一類字符所書寫的模式,其中許多字符不表示其字面意義,而是表達控制或通配等功能。正則表達式使用單個字符串來描述、匹配一系列符合某個句法規則的字符串。在很多文本編輯器里,正則表達式通常被用來檢索、替換那些符合某個模式的文本。許多程序設計語言都支持利用正則表達式進行字符串操作。

正則表達式語言由兩種基本字符類型組成:原義(正常)文本字符和元字符。元字符使正則表達式具有處理能力。所謂元字符就是指那些在正則表達式中具有特殊意義的專用字符,不表示其字面意義,而用于額外功能性描述。

正則表達式分類

正則表達式根據元字符的數量及功能不同又分為基本正則表達式(grep)和拓展正則表達式(egrep)。而grep和egrep同屬于文本搜索工具,可根據用戶指定的文本模式(搜索條件)對目標文件進行逐行搜索,顯示能匹配到的行。用法上grep –E等同于egrep,與grep和egrep相似的文本搜索工具還有fgrep,因不支持使用正則表達式,所以不再單獨介紹。

基本正則表達式(grep)

語法格式:grep[option]… ‘PATTERN’ FILE…

基本正則表達式元字符:

1.字符匹配:

 .:任意單個字符
[ ]:匹配指定范圍內的任意單個字符
[0-9]:匹配單個數字
[a-z]:匹配單個小寫字母
[A-Z]:匹配單個大寫字母
[[:digit:]]:匹配單個數字
[[:lower:]]:匹配單個小寫字母
[[:upper:]]:匹配單個大寫字母
[[:space:]]:匹配單個空白字符
[[:punct:]]:匹配單個標點符號
[[:alnum:]]:匹配單個字母或數字
[[:alpha:]]:匹配單個字母(不分大小寫)
[^]:匹配范圍外的任意單個字符

2.次數匹配

*:任意次(前面字符出現任意次)
\?:0次或1次(前面字符可有可無)
\{m\}: m次(前面字符出現m次)
\{m,n\}:至少m次,至多n次
\{m,\}:至少m次
\{0,n\}:至多n次
.*:任意長度的任意字符

3.位置錨定:

^:行首錨定(寫在模式最左側)
$:行尾錨定(寫在模式最右側)
^$:空白行
\<,/b:詞首錨定(出現于單詞左側)
\>,/b:詞尾錨定(出現于單詞右側)
(注:不包含特殊字符的連續字符組成的串叫單詞)

4.分組

 \( \):如\(ab\)*
(分組中的模式匹配到的內容,可由正則表達式引擎記憶在內存中,之后可被引用)

5.引用

\n:引用前面的第n個左括號以及與之對應的右括號中的模式所匹配到的內容

拓展正則表達式(egrep)

語法格式:egrep [option] ‘PATTERN’ FILE…

拓展正則表達式元字符:

1.字符匹配:

 .:任意單個字符
[ ]:匹配范圍內的任意單個字符
[^]:匹配范圍外的任意單個字符

2.次數匹配:

*:任意次
?: 0或1次
+:至少1次
{m}: m次
{m,n}:至少m次,至多n次
{m,}:至少m次
{0,n}:至多n次

3.位置錨定:

^:行首錨定
$:行尾錨定
\<,\b:詞首錨定
\>,\b:詞尾錨定
^$,^[[:space:]]*$:空白行

4.分組

( ):分組
|:或 

5.引用:

\n:引用前面的第n個左括號以及與之對應的右括號中的模式所匹配到的內容

grep及egrep命令選項

-v: 反向選取
 -o:僅顯示匹配的字串,而非字串所在的行
-i:ignore-case,忽略字符大小寫
-A:顯示之前兩行
-B:顯示之后兩行
-C:顯示上下兩行

牛刀小試

 顯示/proc/meminfo文件中以大寫或小寫S開頭的行

grep、egrep正則表達式之初窺門徑

 顯示/etc/passwd文件中其默認shell為非/sbin/nologin的用戶

grep、egrep正則表達式之初窺門徑

顯示/etc/passwd文件中其默認shell為/bin/bash的用戶中ID號最大的用戶

grep、egrep正則表達式之初窺門徑

找出/etc/passwd文件中的一位數或兩位數

grep、egrep正則表達式之初窺門徑

顯示/boot/grub/grub.conf中以至少一個空白字符開頭的行

grep、egrep正則表達式之初窺門徑

顯示/etc/rc.d/rc.sysinit文件中,以#開頭,后面跟至少一個空白字符,而后又有至少一個非空白字符的行

 grep、egrep正則表達式之初窺門徑

找出netstat -tan命令執行結果中以’LISTEN’結尾的行

grep、egrep正則表達式之初窺門徑

找出當前系統上其用戶名和默認shell相同的用戶

grep、egrep正則表達式之初窺門徑

顯示當前系統上root或scholar用戶的默認shell

grep、egrep正則表達式之初窺門徑

找出/etc/rc.d/init.d/functions文件中某單詞后跟一組小括號“()”行 grep、egrep正則表達式之初窺門徑

使用echo命令輸出一個路徑,而后使用grep取出其基名 grep、egrep正則表達式之初窺門徑

找出ifconfig命令結果中的1-255之間的數字 grep、egrep正則表達式之初窺門徑

The End


    好了總結到這里,常用的正則表達式用法就整理的差不多了,以上都是個人學習總結,如有錯漏,大

神勿噴~~~

原創文章,作者:書生,如若轉載,請注明出處:http://www.www58058.com/1198

(0)
書生書生
上一篇 2015-03-19 21:34
下一篇 2015-03-19 22:28

相關推薦

  • 馬哥教育網絡班N22期+第6周課程練習

    一、總結vim編輯器的使用方法 vim文本編輯器 全屏編輯器,模式化編輯器 vim的教程文件命令:vimtutor vim /path/to/somefile vim模式: 編輯模式(命令模式),默認模式 輸入模式 末行模式 內置的命令行接口; 模式轉換: 編輯模式—>輸入模式: i:insert, 在光標所在處前方輸入,轉為輸入模式 a:append…

    Linux干貨 2016-10-09
  • 馬哥教育網絡班19期+第8周課程練習

    1、請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別。     網橋用來連接兩個不同的網絡間的設備;集線器的作用是把接受的信號放大,從另一個端口再穿法出去,說白了就是延長網絡的傳輸距離;   二層交換機工作在數據鏈路層,根據源和目的MAC地址進行數據轉發;三層交換機就是具有部分路由器功能的交換機,三層交換…

    Linux干貨 2016-07-07
  • Linux上文件管理類命令實例講解

    下面介紹三個文件cp, mv, rm管理命令: cp命令:copy,復制命令 命令格式: cp 源文件 目標文件 復制又分為單源復制和多源復制兩種情況: 單源復制 如果目標文件不存在,創建此文件,并復制數據流到此文件; [root@localhost tmp]# cp yum.log ok [root@localhost tmp]# ls -l total …

    Linux干貨 2018-02-28
  • nmap ncat tcpdump淺析

    nmap 的使用 nmap — 網絡探測工具和安全/端口掃描器 Usage:nmap [ <掃描類型> …] [ <選項> ] { <掃描目標說明> } 掃描目標說明 -iL inputfilename (從列表中輸入) 從 inputfilename中讀取目標說明 [root@localhost&…

    Linux干貨 2017-03-15
  • grep&正則表達式

    grep&正則表達式 grep(global search regular expression(RE) and print out the line,全面搜索正則表達式并把行打印出來)是一種強大的文本搜索工具,它能使用正則表達式搜索文本,并把匹配的行打印出來。 語法 grep [選項]… PATTERN [FILE]… 選項 -a 不要忽略…

    Linux干貨 2018-03-23
  • linux基礎服務之DNS

    一、DNS簡介 1、DNS:Domain Name System(域名系統),是互聯網上IP和域名相互解析的分布式層級結構的數據庫。DNS的出現能夠使用戶更好的更加方便的訪問互聯網,不用記IP地址來訪問互聯網,可以通過人類更容易記住域名來訪問互聯網。 2、DNS是一種C/S架構的服務器,客戶機用于一個名字對應的地址,而服務器是為客戶機提供查詢的,查詢由兩種機…

    2017-05-29

評論列表(3條)

  • stanley
    stanley 2015-03-19 21:46

    重點突出,分類得當,標簽精確,圖文并茂,不得不贊!

    • 書生
      書生 2015-03-19 22:58

      @stanley謝大神抬愛 :roll: :roll: :roll:

    • stanley
      stanley 2015-03-23 18:29

      @書生hi,同學加下我qq,你文章的圖床有問題,我找不到你個人信息聯系不上你

欧美性久久久久