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

相關推薦

  • Openssl搭建私有CA認證

    概述 CA英文全稱Certification Authority,即數字證書認機構。從廣義上來說,CA是負責發放和管理數字證書的權威機構,并作為用戶數字認證中受信任的第三方,承擔公鑰體系(PKI)中公鑰的合法性檢驗的責任,在互聯網上,實現用戶與用戶、用戶與企業之間的數字身份認證。 本文通過使用openssl進行搭建私有CA認證體系,從而簡單地了解CA的認證過…

    Linux干貨 2016-09-22
  • 第九周作業

    第九周作業

    Linux干貨 2017-11-13
  • 系統啟動和內核管理

    Linux組成 Linux:kernel+rootfs kernel:進程管理、內存管理、網絡管理、驅動程序、文件系統、安全功能 rootfs:程序和glibc 庫:函數集合,function,調用接口(頭文件負責描述) 過程調用:procedure,無返回值; 函數調用:function;有返回值,可以賦值于變量中; 程序:二進制執行文件 包括根目錄以及包…

    Linux干貨 2017-05-14
  • 計算機相關簡介和linux相關簡介

    一、計算機相關簡介與linux的一些概念 計算機系統 由硬件(Hardware)系統和軟件(Software)系統兩大部分構成: 硬件系統 :CPU(控制器、運算器),內存儲器(RAM、ROM),外存儲器(硬盤等),輸入設備(鍵盤、鼠標等),輸出設備(顯示器等),其他設備相關設備。  軟件系統 :系統軟件(操作系統,數…

    Linux干貨 2017-02-18
  • GRUB啟動故障排除和內核編譯

    如何進入光盤應急系統(以下修復操作僅適用于GRUB legacy, 不適用于GRUB2): 步驟一:給主機掛上安裝光盤, 或者有相應啟動鏡像的硬盤分區(可移動的分區) 步驟二:開機時選擇CDROM先啟動 步驟三:進入光盤啟動界面選擇應急救援模式 步驟四: 不選擇設置網絡接口, 直接讀取磁盤分區并以讀寫方式掛載 步驟五: 選擇shell進入bash中對磁盤進行…

    Linux干貨 2016-09-12
  • 如何解決生產機上php代碼連接mysql報錯的故障

    大家好: 今天分享一則當生產機上的網站php代碼不能連接Mysql服務器時怎么辦? 當LNMP的網站建立好后,我們需要測試網站中的php代碼。但發現如下報錯怎么辦? 解決方法如下:  mysql> show databases; +——————–+ | Dat…

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