目錄:git
1、簡介正則表達式
2、grep詳解bash
1.grep用法及經常使用選項ide
2.正則表達式工具
2.1正則表達式簡介和分類ui
2.2基本正則表達式在grep中的做用spa
2.3grep示例文檔
2.4擴展正則表達式在egrep的做用字符串
2.5egrep示例it
2.6其餘
1、簡介
grep(Globallysearch a Regular Expression and Print)是一種強大的文本搜索工具,它能使用正則表達式搜索文本,並把匹配的行打印出來。
grep是有家族的,家族成員以下:
(1)grep,默認支持基本正則表達式
(2)egrep,支持擴展正則表達式
(3)fgrep,不支持正則表達式,搜索字符串的速度快
2、grep詳解
1.grep用法及經常使用選項
grep [options] ‘pattern’ FILE 經常使用選項(options): -v:反向選取,只顯示不符合模式的行 -o:只顯示被模式匹配到的字串,而不是整個行 -i:不區分字符大小寫 -A n:顯示匹配到的行時,順帶顯示其後面的n行 -B n:顯示匹配到的行時,順帶顯示其前面的n行 -C n:顯示匹配到的行時,順帶顯示其先後的n行 -E:使用擴展的正則表達式,至關於 egrep
2.正則表達式
2.1正則表達式的分類
正則表達式是一類字符所書寫的模式(pattern),該類字符被稱爲元字符,它不表示字符自己的意義,而用於額外功能性的描述。
正則表達式分爲兩種,分別是基本正則表達式和擴展正則表達式。
2.2基本正則表達式在grep的做用
注意:基本正則表達式默認是工做在貪婪模式(儘量長地去匹配符合模式的內容)
^ :錨定行首符合條件的內容,用法格式 」^pattern」 $ :錨定行尾符合條件的內容,用法格式 」pattern$」 ^$:兩項結合能夠匹配空白行 . :匹配任意單個字符 * :匹配緊挨在其前面的字符任意次 .*:匹配任意長度的任意字符 [] :匹配指定範圍內的任意單個字符 [^] :匹配指定範圍外的任意單個字符 \? :匹配緊挨在其前面的字符0次或1次 \{m\} :精確匹配m次 \{m,\} :匹配至少m次 \{m,n\} :匹配其前面的字符至少m次,至多n次 \< :錨定詞首,用法格式 --> \<pattern \> :錨定詞尾,用法格式 --> pattern\> \(\):分組,用法格式 --> \(pattern\) 相關字符集合: [:digit:] : 全部數字, 至關於0-9 [:lower:] : 全部的小寫字母 [:upper:] : 全部的大寫字母 [:alpha:] : 全部的字母 [:alnum:] : 至關於[0-9a-zA-Z] [:space:] : 空白字符 [:punct:] : 全部標點符號
2.3grep示例
(1)匹配/etc/passwd中包含‘root’字符串的行
# grep --color=auto 'root' /etc/passwd
(2)匹配/etc/passwd中以‘root’字符串開始的行
# grep --color=auto'^root' /etc/passwd
(3)匹配/etc/passwd中以‘bash’字符串結尾的行
# grep --color=auto 'bash$' /etc/passwd
(4)查找/etc/rc.d/rc.sysinit中有多少個空白行
# grep"^$" /etc/rc.d/rc.sysinit | wc -l
(5)匹配grep.txt中符合任意個a後面跟着個b的行
#grep --color=auto "a*b" grep.txt
(6)匹配/etc/passwd中字符r後面跟着任意個字符以後緊跟着字符h的行
# grep --color=auto"r.*h" /etc/passwd
(7)匹配/etc/passwd中以字符r開頭後面跟着任意個字符以後緊跟着以字符h結尾的行
# grep --color=auto"^r.*h$" /etc/passwd
(8)匹配/etc/passwd中字符r後面跟着個數字再跟着任意個字符再緊跟着字符h的行
# grep"r[0-9].*h" /etc/passwd
(9)匹配grep.txt中出現0次或1次個a後面跟着個b的行
# grep"a\?b" grep.txt
(10)匹配grep.txt中出現3次a後面跟着個b的行
# grep --color=auto 「a\{3\}b」 grep.txt
(11)顯示/etc/rc.d/rc.sysinit中以#開頭,且後面跟一個或多個空白字符,然後又跟了任意非空白字符的行
# grep --color=auto ^#[[:space:]]\{1,\}[^[:space:]]/etc/rc.d/rc.sysinit
(12)顯示/etc/rc.d/rc.sysinit中符合形爲「任意單個字符n任意字符任意單個字符n」模式的行;即任意單個字符後面跟了個n,n後面有任意長度的任意字符,然後是任意單個字符後面跟了個n,但後面的n以前的字符要與前面的n以前的字符相同
# grep --color=auto 「\(.n\).*\1」 /etc/rc.d/rc.sysinit
(13)顯示/etc/rc.d/rc.sysinit以boo爲詞首的單詞
# grep --color=auto 「\<boo」 /etc/rc.d/rc.sysinit
2.4擴展正則表達式在grep的做用
^ :錨定行首的符合條件的內容,用法格式 」^pattern」 $ :錨定行尾的符合條件的內容,用法格式 」pattern$」 . :匹配任意單個字符 [ ] :匹配指定範圍內的任意單個字符 [^] :匹配指定範圍外的任意單個字符 * :匹配緊挨在其前面的字符任意次 + :匹配其前面的字符至少1次 ? :匹配緊挨在其前面的字符0次或1次 {m,n} :匹配其前面的字符至少m次,至多n次 ( ) :分組 a|b:二選一 \< :錨定詞首,用法格式--> \<pattern \> :錨定詞尾,用法格式--> pattern\>
2.5egrep示例
(1)匹配grep.txt中a出現1次以上後面跟着個b的行
# egrep--color=auto 「a+b」 grep.txt
(2)匹配grep.txt中a出現0次或者1次後面跟着個b的行
# egrep--color=auto 」a?b「 grep.txt
(3)匹配/proc/cpuinfo中有vendor或者stepping的行
# egrep--color=auto "(vendor|stepping)" /proc/cpuinfo
2.6其餘
在egrep中其餘和grep相同用法的正則匹配就不在這裏演示了。關於命令的相關選項請找man文檔。