grep的使用和正則表達式

       grep作為Linux中的文本編輯的三劍客之一,它的功能很強大,并不是虛傳,學會了grep在文本中找我們要找的的字符串總是能很輕易地找到,grep不僅僅就這一點功能,它在我們工作上也會對我們有很大的幫助。下面我來介紹一下grep的簡單的功能。

grep :文本過濾( 模式:pattern) 工具; (以行為單位的)

grep, egrep,[fgrep (不支持正則表達式 搜索) 搜索速度快]

grep: Global search REgular expression and Print outthe line.

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

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

grep [OPTIONS] PATTERN [FILE…]

grep root /etc/passwd

grep "$USER" /etc/passwd

grep '$USER' /etc/passwd

grep `whoami` /etc/passwd

grep 命令選項

–color=auto:  對匹配到的文本著色顯示;

-v:  顯示不能夠被pattern 匹配到的行;

grep的使用和正則表達式

-i:  忽略字符大小寫

grep的使用和正則表達式

-n: : 顯示匹配的行號

grep的使用和正則表達式

-c:  統計匹配的行數

grep的使用和正則表達式

-o:  僅顯示匹配到的字符串;

grep的使用和正則表達式

-q:  靜默模式,不輸出任何

-A # :after,  后#行

-B #: before,  前#行

-C # :context,  前后各#行

-e :實現多個選項間的邏輯or (或)關系   -C # :conte

grep –e ‘cat ’ -e ‘dog’ file

grep的使用和正則表達式

-w :整行匹配整個單詞

grep -w.PNG

-E :使用ERE

正則表達式引擎:

采用 不同 算法,檢查處理正則表達式的軟件模塊

PCRE(Perl Compatible Regular Expressions)

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

man 7 regex

程序支持:grep, vim, less,nginx等

分兩類:

基本正則表達式:BRE

字符匹配:

. :  匹配任意單個字符;

[] :  匹配指定范圍內的任意單個字符

[].PNG

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

[^].PNG

[:digit:] 、[:lower:] 、[:upper:] 、[:alpha:] 、[:alnum:] 、[:punct:] 、[:space:]

匹配次數:用在要指定次數的字符后面,用于指定前面的字符要出現的次數

* :匹配前面的字符任意次,包括0次

貪婪模式:盡可能長的匹配

.* :任意長度的任意字符

匹配任意單個字符.PNG

\? :匹配其前面的字符0 或1次

\+ :匹配其前面的字符至少1次

匹配前面的字符至少一次.PNG

\{n\} :匹配前面的字符n次

匹配前面字符n次.PNG

\{m,n\} :匹配前面的字符至少m 次,至多n次

匹配前面的字符至少m次,至多n次.PNG

\{,n\} :匹配前面的字符至多n次

匹配前面的字符至多n次.PNG

\{n,\} :匹配前面的字符至少n次

匹配前面的字符至少n次.PNG

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

^ :行首錨定,用于模式的最左側

$ :行尾錨定,用于模式的最右側

詞手和詞尾錨定.PNG

^PATTERN$:  用于模式匹配整行

^$:  空行

^[[:space:]]*$  :空白行

\< 或 或 \b :詞首錨定,用于單詞模式的左側

\> 或 或 \b :詞尾錨定;用于單詞模式的右側

\<PATTERN\> :匹配整個單詞

匹配整個單詞.PNG

分組:\(\) :將一個或多個字符捆綁在一起,當作一個整體進行處理,如:\(root\)\+

\(root\) \+ 表示root多次

分組括號中的模式匹配到的內容會被正則表達式引擎記錄于內部的變量中,這些變量的命名方式為: \1, \2, \3, …

\1:  從左側起,第一個左括號以及與之匹配右括號之間的模式所匹配到的字符;

實例: \(string1\+\(string2\)*\)

\1: string1\+\(string2\)*

\2: string2v

沒有指定你要匹配的位置,它會把這一列中都符合的顯示出來

捕獲2.PNG

當你指定要匹配的位置后,但指定位置中出現了你要匹配的字符 ^\<\(.*\)\> 只是你匹配的字符的一部分,它也會把要配備的顯示出來。這是需要你在你匹配的字符\1 前面加上一個/\1符號或者\<\1\>就行了。

捕獲3.PNG

后向引用:引用前面的分組括號中的模式所匹配字符(而非模式本身)

正則表達式圖表

grep的使用和正則表達式

grep的使用和正則表達式

REGEXP :由一類特殊字符及文本字符所編寫的模式,其中有些字符(元字符)不表示字符字面意義,而表示控制或通配的功能

擴展正則表達式:ERE

grep -E, egrep

egrep 及擴展的正則表達式

egrep = grep -E

egrep [OPTIONS] PATTERN [FILE…]

擴展正則表達式的元字符:

字符匹配:

.  任意單個字符

[]  指定范圍的字符

[^]  不在指定范圍的字符

次數匹配:

* :匹配前面字符任意次

egrep 匹配前面字符任意次.PNG

?: 0 或1次

egrep 匹配前面的字符0或1次.PNG

+ :1 次或多次

egrep 匹配前面字符一次或多次.PNG

{m} :匹配m次

egrep 匹配m次.PNG

{m,n} :至少m ,至多n次

egrep  匹配前面的字符至少m,至多n.PNG

位置錨定:

^ : 行首

$ : 行尾

\<, \b : 語首

\>, \b : 語尾

egrep 詞首詞尾錨定.PNG

分組:

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

或者:

a|b

C|cat: C 或cat

(C|c)at:Cat 或cat

egrep 分組.PNG

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

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

相關推薦

  • shell腳本編寫-5

      1、 數組 變量:存儲單個元素的內存空間 數組:存儲多個元素的連續的內存空間,相當于多個變量的集合 數組名和索引 索引:編號從0 開始,屬于數值索引 注意:索引可支持使用自定義的格式,而不僅是數值格式,即為關聯索引,bash4.0版本之后開始支持。而且bash 的數組支持稀疏格式(索引不連續) 1)、定義數組 聲明數組: declare -a …

    Linux干貨 2016-09-01
  • Linux程序包管理(二)YUM使用

    YUM Linux程序包管理(二) 說完了程序包管理以及rpm的相關使用,接下來說說rpm的前端管理工具 YUM YUM是什么? &emsp;&emsp;&emsp;前面提到,yum是rpm程序包管理器的前端管理工具,那么yum到底是什么?又能做什么呢? YUM:yellow dog,Yellowdog Update Mod…

    Linux干貨 2016-06-01
  • date命令常見用法。

    date是一個非常實用的小工具,可以查看時間,并且也可以添加選項去完成自己想完成的東西。

    Linux干貨 2017-11-13
  • day7作業練習

    1、顯示當前系統root、mage或wang用戶的UID和默認shell  2、找出/etc/rc.d/init.d/functions文件中行首為某單詞(包 括下劃線)后面跟一個小括號的行  3、使用egrep取出/etc/rc.d/init.d/functions中其基名     v …

    系統運維 2016-08-08
  • 學習宣言

    娶媳婦!娶媳婦!娶媳婦有木有!?。?請享受無法回避的痛苦?。。。。。?!

    Linux干貨 2016-12-27
  • select case的用法-函數練習-20160819

    §·select  case的用法 *介紹select 循環與菜單 ◎語法 select  variable  in  list[ ] do 循環體命令 Done  ◎select 循環主要用于創建菜單,按數字順序排列的菜單項將顯示在標準錯誤上,并顯示PS3 提示符,等待用戶輸 入 ◎用戶…

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