grep及正則表達式

grep簡介

grep 是一種強大的文本搜索工具,它能使用正則表達式搜索文本,並把匹配的行打印出來。通常grep有三種版本grep、egrep(等同於grep -E)和fgrep。egrep爲擴展的grep,fgrep則爲快速grep(固定的字符串來對文本進行搜索,不支持正則表達式的引用但是查詢極爲快速)。grep是Linux文本處理三劍客之一。

grep使用方式

grep [options] PATTERN [FILE...]

-i : 忽略字符的大小寫

--color:高亮顯示關鍵字

-v: 顯示沒有被模式匹配到的行

-o:只顯示被模式匹配到的字符串

Pattern: 文本字符和正則表達式的元字符組合而成匹配條件

正則表達式:REGular EXPression, REGEXP

元字符:

.: 匹配任意單個字符

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

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

             字符集合:[:digit:], [:lower:], [:upper:], [:punct:], [:space:], [:alpha:], [:alnum:]

匹配次數(貪婪模式):

*: 匹配其前面的字符任意次        

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

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

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

                 \{1,\}

                 \{0,3\}

位置錨定:

^: 錨定行首,此字符後面的任意內容必須出現在行首

$: 錨定行尾,此字符前面的任意內容必須出現在行尾

^$: 空白行

\<或\b: 錨定詞首,其後面的任意字符必須作爲單詞首部出現

\>或\b: 錨定詞尾,其前面的任意字符必須作爲單詞的尾部出現

分組:

\(\)

\(ab\)*

後向引用

\1: 引用第一個左括號以及與之對應的右括號所包括的所有內容

\2:

\3:

Tips

  • [root@mysql ~]# alias grep='grep --color'

設置別名  grep默認關鍵字高亮顯示

  •  查詢以空白字符數字結尾的行

[root@mysql ~]# grep '[[:space:]][[:digit:]]$' /etc/inittab

  • He love his lover.    She like her liker.  查詢這樣的內容

[root@mysql ~]# grep '\(l..e\).*\1' test3.test

  • 在/proc/meminfo查詢以s或者S開頭的內容

[root@mysql ~]# grep '^[sS]' /proc/meminfo 

  • 取出默認shell爲bash,且其用戶ID號最小的用戶的用戶名

 grep 'bash$' /etc/passwd | sort -n -t: -k3 | head -1 | cut -d: -f1

  • 顯示/etc/inittab中以#開頭,且後面跟一個或多個空白字符,而後又跟了任意非空白字符的行

grep '^#[[:space:]]\{1,\}[^[:space:]]*' /etc/inittab

  • 顯示/etc/inittab中包含了:一個數字:(即兩個冒號中間一個數字)的行;

grep ':[[:digit:]]:' /etc/inittab

grep ':[0-9]:' /etc/inittab

  • 顯示/etc/inittab文件中以一個數字開頭並以一個與開頭數字相同的數字結尾的行

grep '^\([0-9]\).*\1$' /etc/inittab

  • 查找當前系統上名字爲student(必須出現在行首)的用戶的帳號的相關信息, 文件爲/etc/passwd

 grep '^student\>' /etc/passwd | cut -d: -f3

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章