9 grep & egrep & 正則表達式

grep

grep = Global search REgular expression and Print out the line

語法及用途

grep [OPTIONS] PATTERN [FILE...]

根據用戶指定的“ PATTERN ”對FILE逐行進行匹配檢查,打印匹配到的行;
PATTERN 是由正則表達式字符及文本字符所編寫的過濾條件。

常用選項

參數 說明
–color=auto 對匹配到的文本著色顯示;
-v 顯示不能夠被pattern匹配到的行;
-i 忽略字符大小寫
-n 顯示匹配的行號
-c 統計匹配的行數
-o 僅顯示匹配到的字符串;
-q 靜默模式,不輸出任何信息
-A # after, 后#行
-B # before, 前#行
-C # context, 前后各#行
-e 實現多個選項間的邏輯or關系(grep –e ‘cat ’ -e ‘dog’ file)
-w 整行匹配整個單詞
-E 使用擴展正則表達式ERE,否則使用基本正則表達式BRE

正則表達式

基本正則表達式BRE

字符匹配

字符 含義
. 匹配任意單個字符;
[] 匹配指定范圍內的任意單個字符
[^] 匹配指定范圍外的任意單個字符
[:digit:] 數字
[:lower:] 小寫字母
[:upper:] 大寫字母
[:alpha:] 字母
[:alnum:] 字母與數字
[:punct:] 標點
[:space:] 空字符或tab

匹配次數

用在要指定次數的字符后面,用于指定前面的字符要出現的次數
字符 含義
* 匹配前面的字符任意次,包括0次(貪婪模式:盡可能長的匹配)
.* 任意長度的任意字符
? 匹配其前面的字符0或1次
\+ 匹配其前面的字符至少1次
\{m\} 匹配前面的字符m次
\{m,n\} 匹配前面的字符至少m次,至多n次
\{,n\} 匹配前面的字符至多n次
\{m,\} 匹配前面的字符至少m次

位置錨定

定位出現的位置
字符 含義
^ 行首錨定,用于模式的最左側
$ 行尾錨定,用于模式的最右側
^PATTERN$ 用于模式匹配整行
^$ 空行
^[[:space:]]*$ 空白行
\< 或 \b 詞首錨定,用于單詞模式的左側
\> 或 \b 詞尾錨定;用于單詞模式的右側
\<PATTERN\> 匹配整個單詞

分組

\(\):將一個或多個字符捆綁在一起,當作一個整體進行處理,如:\(root\)\+
分組括號中的模式匹配到的內容會被正則表達式引擎記錄于內部的變量中,這些變量的命名方式為: \1, \2, \3, ...
    \1: 從左側起,第一個左括號以及與之匹配右括號之間的模式所匹配到的字符;
        實例: \(string1\+\(string2\)*\)
              \1: string1\+\(string2\)*
              \2: string2
后向引用:引用前面的分組括號中的模式所匹配字符(而非模式本身),即\1引用的第一個匹配到的結果,而非模式。

擴展正則表達式ERE

要使用擴展正則表達式,需要使用egrep或grep -E命令,如下所示:
egrep = grep -E
egrep [OPTIONS] PATTERN [FILE...]

字符匹配

字符 含義
. 任意單個字符
[] 指定范圍的字符
[^] 不在指定范圍的字符

次數匹配

字符 含義
* 匹配前面字符任意次
? 0或1次
+ 1次或多次
{m} 匹配m次
{m,n} 至少m,至多n次

位置錨定

字符 含義
^ 行首
$ 行尾
\<, \b 語首
\>, \b 語尾

分組

() 后向引用:\1, \2, …

或者

a|b 

C|cat    :C 或 cat 

(C|c)at  :Cat 或 cat


練習

  1. 顯示/proc/meminfo信息中以s或S開頭的信息

image1.png

  1. 顯示rpc用戶所使用的shell類型

image2.png

  1. 查看/etc/passwd中出現的2~3位數字

image3.png

  1. 查看/etc/grub2.cfg中以空白開始的非空行

image4.png

  1. 查看/etc/passwd 中用戶名與shell同名的用戶信息

image5.png

  1. 顯示當前系統root、mage或wang用戶的UID和默認shell

image6.png

  1. 找出/etc/rc.d/init.d/functions文件中行首為某單詞(包括下劃線)后面跟一個小括號的行

image7.png

  1. 使用egrep取出/etc/rc.d/init.d/functions中其基名

image8.png

  1. 使用egrep取出上面路徑的目錄名

image9.png

  1. 統計以root身份登錄的每個遠程主機IP地址的登錄次數

image10.png

  1. 利用擴展正則表達式分別表示0-9、10-99、100-199、200-249、250-255

0-9     :   [0-9]
10-99   :   [1-9][0-9]
100-199 :   1[0-9]{2}
200-249 :  2[0-4][0-9]
250-255 :  25[0-5]
  1. 顯示ifconfig命令結果中所有IPv4地址

12.png


  1. [😒pace:] ?

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

(0)
taobaibaitaobaibai
上一篇 2016-08-10
下一篇 2016-08-10

相關推薦

  • Linux 入門基礎 及一些常見命令(上)

    計算機的組成及其各部分的功能 現代計算機的基本結構是由匈牙利-美國科學家馮· 諾依曼于1946年提出的。迄今為止所有進入實用的電子計算機  都是按馮· 諾依曼提出的結構體系和工作原理設計制造的,故又統稱為“馮·諾依曼型計算機". 根據馮.諾依曼原理:計算機由運算器、控制器、存儲器、輸入設備、輸出設備所組成. 運算器: 進行算術與邏輯運算.…

    Linux干貨 2016-09-17
  • Linux磁盤管理(一)之分區、格式化、掛載使用

    磁盤管理(一)   本章節內容: 磁盤結構 分區類型   管理分區   管理文件系統   掛載設備   一、磁盤結構: 1、設備號碼:  主設備號:major number, 標識設備類型 次設備號:minor number, 標識同一類型下的不同設備  &n…

    Linux干貨 2016-08-26
  • Mariadb數據庫復制系列(四):復制過濾器的實現

       實驗四:復制過濾器的實現 復制過濾器的作用是讓從節點僅復制主節點的指定的庫,或指定數據庫的指定表,而不是全部復制。其配置方式有兩種,一種是在主節點上配置,通過定義主節點只記錄部分庫或表產生的二進制日志時間來實現;一種是通過從節點上配置,當復制了主節點的所有的二進制日志數據后,在SQL線程執行時,只執行指定的庫或表相關的二進制日志時間;一般采取在從節點上…

    Linux干貨 2016-11-24
  • 面向對象的實例方法,類方法和靜態方法

    類方法和靜態方法 普通函數 class Person: def normal_method(): print(‘normal’) Person.normal_method() # Person().normal_method() print(Person.__dict__) Person.normal_method()可以,是因為這個方法只是被Person這…

    2017-11-11
  • 12壓縮與解壓

    在Linux系統中壓縮、解壓以及歸檔的工具主要有一下幾種: file-roller : 這個工具適合在桌面系統下進行解壓操作。 compress/uncompress  :這是一個比較老的解壓工具,壓縮后會添加.Z為后綴 gzip/gunzip : .gz結尾 bzip2/bunzip2 : .bz2 xz/unxz : .xz  zip…

    Linux干貨 2016-11-27
  • linux用戶和組及其配置

    LINUX用戶和組概念及相關配置 1.   用戶 我們在使用linux過程中,最直觀的就是用戶。用戶就是我們要登錄、操作的那個人。系統驗證密碼的過程就是在驗證“你就是你”的過程。用戶分為管理員和普通用戶,計算機能識別的語言就是一堆的數字。你所看到的用戶名計算機也會把它轉化為數字,叫做ID號。管理員的ID為0,普通用戶分為兩種,一種是系統用…

    Linux干貨 2016-10-24
欧美性久久久久