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: 錨定詞尾,其前面的任意字符必須作為單詞的尾部出現

分組:

abab*

后向引用

\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..el..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][0?9].*\1$' /etc/inittab

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

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

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容