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 10:27
下一篇 2016-08-10 10:27

相關推薦

  • mysql并發控制

    并發控制: 鎖:Lock 1、鎖類型 : 讀鎖:共享鎖,可被多個讀操作共享; 寫鎖:排它鎖,獨占鎖; 2、鎖粒度: 表鎖:在表級別施加鎖,并發性較低; 行鎖:在行級另施加鎖,并發性較高; 3、鎖策略:在鎖粒度及數據安全性之間尋求一種平衡機制; 存儲引擎:級別以及何時施加或釋放鎖由存儲引擎自行決定; MySQL Server:表級別,可自行決定,也允許顯式請求…

    2016-11-18
  • 腳本實現httpd創建虛擬主機

    概述 本文使用腳本實現基于主機名的虛擬主機按需創建: 腳本可接受參數,提供獨立站點目錄; 生成獨立站點首頁; 腳本可接受參數,參數虛擬主機名稱; 每虛擬使用單獨的配置文件; 腳本可接受參數,參數虛擬主機名稱; 環境 系統基于CentOS7.2,并通過yum安裝httpd 2.4.6 建議關閉防火墻和selinux。 演示   客戶機將域名解析寫入/…

    Linux干貨 2016-10-08
  • N25-第四周作業

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其他用戶均沒有任何訪問權限。 1.  [root@jizo etc]# ls –d skel 2.  skel 3.  [root@jizo etc]# cd /home 4.  [root@jizo …

    Linux干貨 2016-12-26
  • 第一周作業

    一、計算機的基本組成和功能   cpu包括運算器、控制器、寄存器、緩存       運算器:計算功能,對數據進行加工處理的的部件;       控制器:負責從存儲器取出指令,控制cpu計算器之間的運行結果和狀態;       寄存器:暫存指令和數據的地方,存儲…

    Linux干貨 2016-12-04
  • 淺談DNS基本原理以及實現方法(二)

             DNS作為互聯網服務的一個基礎型服務,了解和掌握DNS服務的原理和配置將是每一個運維人員必備的技能,這就如同闖蕩江湖的俠客不但要有的招式,還要懂的運用這些招式的心法一樣,接下來我將從DNS的正反向解析、主從同步、子域授權以及Bind view這四個方面來揭開它神…

    Linux干貨 2015-12-19
  • 第10天:程序包,腳本,sed

    http://note.youdao.com/yws/public/redirect/share?id=b9432a76ff1180b42e01f6eb7c9fc90e&type=false

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