4.grep命令使用簡(jiǎn)單實(shí)例 $ grep ‘test’ d* 顯示所有以d開(kāi)頭的文件中包含 test的行。 $ grep ‘test’ aa bb cc 顯示在aa,bb,cc文件中匹配test的行。 $ grep ‘[a-z]\{5\}’ aa 顯示所有包含每個(gè)字符串至少有5個(gè)連續(xù)小寫(xiě)字符的字符串的行。 $ grep ‘w\(es\)t.*\1′ aa 如果west被匹配,則es就被存儲(chǔ)到內(nèi)存中,并標(biāo)記為1,然后搜索任意個(gè)字符(.*),這些字符后面緊跟著 另外一個(gè)es(\1),找到就顯示該行。如果用egrep或grep -E,就不用”\”號(hào)進(jìn)行轉(zhuǎn)義,直接寫(xiě)成’w(es)t.*\1′就可以了。
5.grep命令使用復(fù)雜實(shí)例 假設(shè)您正在’/usr/src/Linux/Doc’目錄下搜索帶字符 串’magic’的文件: $ grep magic /usr/src/Linux/Doc/* sysrq.txt:* How do I enable the magic SysRQ key? sysrq.txt:* How do I use the magic SysRQ key? 其中文件’sysrp.txt’包含該字符串,討論的是 SysRQ 的功能。 默認(rèn)情況下,’grep’只搜索當(dāng)前目錄。如果 此目錄下有許多子目錄,’grep’會(huì)以如下形式列出: grep: sound: Is a directory 這可能會(huì)使’grep’ 的輸出難于閱讀。這里有兩種解決的辦法: 明確要求搜索子目錄:grep -r 或忽略子目錄:grep -d skip 如果有很多 輸出時(shí),您可以通過(guò)管道將其轉(zhuǎn)到’less’上閱讀: $ grep magic /usr/src/Linux/Documentation/* | less 這樣,您就可以更方便地閱讀。
4.grep命令使用簡(jiǎn)單實(shí)例 $ grep ‘test’ d* 顯示所有以d開(kāi)頭的文件中包含 test的行。 $ grep ‘test’ aa bb cc 顯示在aa,bb,cc文件中匹配test的行。 $ grep ‘[a-z]\{5\}’ aa 顯示所有包含每個(gè)字符串至少有5個(gè)連續(xù)小寫(xiě)字符的字符串的行。 $ grep ‘w\(es\)t.*\1′ aa 如果west被匹配,則es就被存儲(chǔ)到內(nèi)存中,并標(biāo)記為1,然后搜索任意個(gè)字符(.*),這些字符后面緊跟著 另外一個(gè)es(\1),找到就顯示該行。如果用egrep或grep -E,就不用”\”號(hào)進(jìn)行轉(zhuǎn)義,直接寫(xiě)成’w(es)t.*\1′就可以了。
5.grep命令使用復(fù)雜實(shí)例 假設(shè)您正在’/usr/src/Linux/Doc’目錄下搜索帶字符 串’magic’的文件: $ grep magic /usr/src/Linux/Doc/* sysrq.txt:* How do I enable the magic SysRQ key? sysrq.txt:* How do I use the magic SysRQ key? 其中文件’sysrp.txt’包含該字符串,討論的是 SysRQ 的功能。 默認(rèn)情況下,’grep’只搜索當(dāng)前目錄。如果 此目錄下有許多子目錄,’grep’會(huì)以如下形式列出: grep: sound: Is a directory 這可能會(huì)使’grep’ 的輸出難于閱讀。這里有兩種解決的辦法: 明確要求搜索子目錄:grep -r 或忽略子目錄:grep -d skip 如果有很多 輸出時(shí),您可以通過(guò)管道將其轉(zhuǎn)到’less’上閱讀: $ grep magic /usr/src/Linux/Documentation/* | less 這樣,您就可以更方便地閱讀。
grep (global search regular expression(RE) and print out the line,全面搜索正則表達(dá)式并把行打印出來(lái))是一種強(qiáng)大的文本搜索工具,它能使用正則表達(dá)式搜索文本,并把匹配的行打印出來(lái)。Unix的grep家族包 括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的擴(kuò)展,支持更多的re元字符, fgrep就是fixed grep或fast grep,它們把所有的字母都看作單詞,也就是說(shuō),正則表達(dá)式中的元字符表示回其自身的字面意義,不再特殊。linux使用GNU版本的grep。它功能 更強(qiáng),可以通過(guò)-G、-E、-F命令行選項(xiàng)來(lái)使用egrep和fgrep的功能。
2015-09-11
這些加上去就復(fù)雜多了
2014-12-02
http://wenku.baidu.com/view/5003fac58bd63186bcebbcc2.html
2014-12-02
強(qiáng)行露臉,嘻嘻嘻~~~
2014-12-02
grep:
選項(xiàng)與參數(shù):
-a :將 binary 文件以 text 文件的方式搜尋數(shù)據(jù)
-c :計(jì)算找到 '搜尋字符串' 的次數(shù)
-i :忽略大小寫(xiě)的不同,所以大小寫(xiě)視為相同-n :順便輸出行號(hào)
-v :反向選擇,亦即顯示出沒(méi)有 '搜尋字符串' 內(nèi)容的那一行
-l:查詢(xún)多文件時(shí)只輸出包含匹配字符的文件名。
正則表達(dá)式主要參數(shù):
\: 忽略正則表達(dá)式中特殊字符的原有含義。
^:匹配正則表達(dá)式的開(kāi)始行。
$: 匹配正則表達(dá)式的結(jié)束行。
\<:從匹配正則表達(dá) 式的行開(kāi)始。
\>:到匹配正則表達(dá)式的行結(jié)束。
[ ]:?jiǎn)蝹€(gè)字符,如[A]即A符合要求 。
[ - ]:范圍,如[A-Z],即A、B、C一直到Z都符合要求 。
。:所有的單個(gè)字符。
* :有字符,長(zhǎng)度可以為0。
2014-12-02
grep命令
1.作用
Linux系統(tǒng)中g(shù)rep命令是一種強(qiáng)大的文本搜索工具,它能使用正則表達(dá)式搜索文本,并把匹 配的行打印出來(lái)。grep全稱(chēng)是Global Regular Expression Print,表示全局正則表達(dá)式版本,它的使用權(quán)限是所有用戶(hù)。
2.格式
grep [options]
3.主要參數(shù)
[options]主要參數(shù):
-c:只輸出匹配行的計(jì)數(shù)。
-I:不區(qū)分大 小寫(xiě)(只適用于單字符)。
-h(huán):查詢(xún)多文件時(shí)不顯示文件名。
-l:查詢(xún)多文件時(shí)只輸出包含匹配字符的文件名。
-n:顯示匹配行及 行號(hào)。
-s:不顯示不存在或無(wú)匹配文本的錯(cuò)誤信息。
-v:顯示不包含匹配文本的所有行。
pattern正則表達(dá)式主要參數(shù):
\: 忽略正則表達(dá)式中特殊字符的原有含義。
^:匹配正則表達(dá)式的開(kāi)始行。
$: 匹配正則表達(dá)式的結(jié)束行。
\<:從匹配正則表達(dá) 式的行開(kāi)始。
\>:到匹配正則表達(dá)式的行結(jié)束。
[ ]:?jiǎn)蝹€(gè)字符,如[A]即A符合要求 。
[ - ]:范圍,如[A-Z],即A、B、C一直到Z都符合要求 。
。:所有的單個(gè)字符。
* :有字符,長(zhǎng)度可以為0。
4.grep命令使用簡(jiǎn)單實(shí)例
$ grep ‘test’ d*
顯示所有以d開(kāi)頭的文件中包含 test的行。
$ grep ‘test’ aa bb cc
顯示在aa,bb,cc文件中匹配test的行。
$ grep ‘[a-z]\{5\}’ aa
顯示所有包含每個(gè)字符串至少有5個(gè)連續(xù)小寫(xiě)字符的字符串的行。
$ grep ‘w\(es\)t.*\1′ aa
如果west被匹配,則es就被存儲(chǔ)到內(nèi)存中,并標(biāo)記為1,然后搜索任意個(gè)字符(.*),這些字符后面緊跟著 另外一個(gè)es(\1),找到就顯示該行。如果用egrep或grep -E,就不用”\”號(hào)進(jìn)行轉(zhuǎn)義,直接寫(xiě)成’w(es)t.*\1′就可以了。
5.grep命令使用復(fù)雜實(shí)例
假設(shè)您正在’/usr/src/Linux/Doc’目錄下搜索帶字符 串’magic’的文件:
$ grep magic /usr/src/Linux/Doc/*
sysrq.txt:* How do I enable the magic SysRQ key?
sysrq.txt:* How do I use the magic SysRQ key?
其中文件’sysrp.txt’包含該字符串,討論的是 SysRQ 的功能。
默認(rèn)情況下,’grep’只搜索當(dāng)前目錄。如果 此目錄下有許多子目錄,’grep’會(huì)以如下形式列出:
grep: sound: Is a directory
這可能會(huì)使’grep’ 的輸出難于閱讀。這里有兩種解決的辦法:
明確要求搜索子目錄:grep -r
或忽略子目錄:grep -d skip
如果有很多 輸出時(shí),您可以通過(guò)管道將其轉(zhuǎn)到’less’上閱讀:
$ grep magic /usr/src/Linux/Documentation/* | less
這樣,您就可以更方便地閱讀。
有一點(diǎn)要注意,您必需提供一個(gè)文件過(guò)濾方式(搜索全部文件的話用 *)。如果您忘了,’grep’會(huì)一直等著,直到該程序被中斷。如果您遇到了這樣的情況,按 <CTRL c> ,然后再試。
下面還有一些有意思的命令行參數(shù):
grep -i pattern files :不區(qū)分大小寫(xiě)地搜索。默認(rèn)情況區(qū)分大小寫(xiě),
grep -l pattern files :只列出匹配的文件名,
grep -L pattern files :列出不匹配的文件名,
grep -w pattern files :只匹配整個(gè)單詞,而不是字符串的一部分(如匹配’magic’,而不是’magical’),
grep -C number pattern files :匹配的上下文分別顯示[number]行,
grep pattern1 | pattern2 files :顯示匹配 pattern1 或 pattern2 的行,
grep pattern1 files | grep pattern2 :顯示既匹配 pattern1 又匹配 pattern2 的行。
grep -n pattern files? 即可顯示行號(hào)信息
grep -c pattern files? 即可查找總行數(shù)
2014-12-02
1.作用
Linux系統(tǒng)中g(shù)rep命令是一種強(qiáng)大的文本搜索工具,它能使用正則表達(dá)式搜索文本,并把匹 配的行打印出來(lái)。grep全稱(chēng)是Global Regular Expression Print,表示全局正則表達(dá)式版本,它的使用權(quán)限是所有用戶(hù)。
2.格式
grep [options]
3.主要參數(shù)
[options]主要參數(shù):
-c:只輸出匹配行的計(jì)數(shù)。
-I:不區(qū)分大 小寫(xiě)(只適用于單字符)。
-h(huán):查詢(xún)多文件時(shí)不顯示文件名。
-l:查詢(xún)多文件時(shí)只輸出包含匹配字符的文件名。
-n:顯示匹配行及 行號(hào)。
-s:不顯示不存在或無(wú)匹配文本的錯(cuò)誤信息。
-v:顯示不包含匹配文本的所有行。
pattern正則表達(dá)式主要參數(shù):
\: 忽略正則表達(dá)式中特殊字符的原有含義。
^:匹配正則表達(dá)式的開(kāi)始行。
$: 匹配正則表達(dá)式的結(jié)束行。
\<:從匹配正則表達(dá) 式的行開(kāi)始。
\>:到匹配正則表達(dá)式的行結(jié)束。
[ ]:?jiǎn)蝹€(gè)字符,如[A]即A符合要求 。
[ - ]:范圍,如[A-Z],即A、B、C一直到Z都符合要求 。
。:所有的單個(gè)字符。
* :有字符,長(zhǎng)度可以為0。
4.grep命令使用簡(jiǎn)單實(shí)例
$ grep ‘test’ d*
顯示所有以d開(kāi)頭的文件中包含 test的行。
$ grep ‘test’ aa bb cc
顯示在aa,bb,cc文件中匹配test的行。
$ grep ‘[a-z]\{5\}’ aa
顯示所有包含每個(gè)字符串至少有5個(gè)連續(xù)小寫(xiě)字符的字符串的行。
$ grep ‘w\(es\)t.*\1′ aa
如果west被匹配,則es就被存儲(chǔ)到內(nèi)存中,并標(biāo)記為1,然后搜索任意個(gè)字符(.*),這些字符后面緊跟著 另外一個(gè)es(\1),找到就顯示該行。如果用egrep或grep -E,就不用”\”號(hào)進(jìn)行轉(zhuǎn)義,直接寫(xiě)成’w(es)t.*\1′就可以了。
5.grep命令使用復(fù)雜實(shí)例
假設(shè)您正在’/usr/src/Linux/Doc’目錄下搜索帶字符 串’magic’的文件:
$ grep magic /usr/src/Linux/Doc/*
sysrq.txt:* How do I enable the magic SysRQ key?
sysrq.txt:* How do I use the magic SysRQ key?
其中文件’sysrp.txt’包含該字符串,討論的是 SysRQ 的功能。
默認(rèn)情況下,’grep’只搜索當(dāng)前目錄。如果 此目錄下有許多子目錄,’grep’會(huì)以如下形式列出:
grep: sound: Is a directory
這可能會(huì)使’grep’ 的輸出難于閱讀。這里有兩種解決的辦法:
明確要求搜索子目錄:grep -r
或忽略子目錄:grep -d skip
如果有很多 輸出時(shí),您可以通過(guò)管道將其轉(zhuǎn)到’less’上閱讀:
$ grep magic /usr/src/Linux/Documentation/* | less
這樣,您就可以更方便地閱讀。
有一點(diǎn)要注意,您必需提供一個(gè)文件過(guò)濾方式(搜索全部文件的話用 *)。如果您忘了,’grep’會(huì)一直等著,直到該程序被中斷。如果您遇到了這樣的情況,按 <CTRL c> ,然后再試。
下面還有一些有意思的命令行參數(shù):
grep -i pattern files :不區(qū)分大小寫(xiě)地搜索。默認(rèn)情況區(qū)分大小寫(xiě),
grep -l pattern files :只列出匹配的文件名,
grep -L pattern files :列出不匹配的文件名,
grep -w pattern files :只匹配整個(gè)單詞,而不是字符串的一部分(如匹配’magic’,而不是’magical’),
grep -C number pattern files :匹配的上下文分別顯示[number]行,
grep pattern1 | pattern2 files :顯示匹配 pattern1 或 pattern2 的行,
grep pattern1 files | grep pattern2 :顯示既匹配 pattern1 又匹配 pattern2 的行。
grep -n pattern files? 即可顯示行號(hào)信息
grep -c pattern files? 即可查找總行數(shù)
這里還有些用于搜索的特殊符號(hào):
\< 和 \> 分別標(biāo)注單詞的開(kāi)始與結(jié)尾。
例如:
grep man * 會(huì)匹配 ‘Batman’、’manic’、’man’等,
grep ‘\<man’ * 匹配’manic’和’man’,但不是’Batman’,
grep ‘\<man\>’ 只匹配’man’,而不是’Batman’或’manic’等其他的字符串。
‘^’:指匹配的字符串在行首,
‘$’:指匹配的字符串在行 尾,
Grep 命令 用法大全
1、 參數(shù):
-I :忽略大小寫(xiě)
-c :打印匹配的行數(shù)
-l :從多個(gè)文件中查找包含匹配項(xiàng)
-v :查找不包含匹配項(xiàng)的行
-n:打印包含匹配項(xiàng)的行和行標(biāo)
2、RE(正則表達(dá)式)
\ 忽略正則表達(dá)式中特殊字符的原有含義
^ 匹配正則表達(dá)式的開(kāi)始行
$ 匹配正則表達(dá)式的結(jié)束行
\< 從匹配正則表達(dá)式的行開(kāi)始
\> 到匹配正則表達(dá)式的行結(jié)束
[ ] 單個(gè)字符;如[A] 即A符合要求
[ - ] 范圍 ;如[A-Z]即A,B,C一直到Z都符合要求
. 所有的單個(gè)字符
* 所有字符,長(zhǎng)度可以為0
2014-12-02
?grep簡(jiǎn)介
grep (global search regular expression(RE) and print out the line,全面搜索正則表達(dá)式并把行打印出來(lái))是一種強(qiáng)大的文本搜索工具,它能使用正則表達(dá)式搜索文本,并把匹配的行打印出來(lái)。Unix的grep家族包 括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的擴(kuò)展,支持更多的re元字符, fgrep就是fixed grep或fast grep,它們把所有的字母都看作單詞,也就是說(shuō),正則表達(dá)式中的元字符表示回其自身的字面意義,不再特殊。linux使用GNU版本的grep。它功能 更強(qiáng),可以通過(guò)-G、-E、-F命令行選項(xiàng)來(lái)使用egrep和fgrep的功能。
grep的工作方式是這樣的,它在一個(gè)或多個(gè)文件中搜索字符串模板。如果模板包括空格,則必須被引用,模板后的所有字符串被看作文件名。搜索的結(jié)果被送到屏幕,不影響原文件內(nèi)容。
grep可用于shell腳本,因?yàn)間rep通過(guò)返回一個(gè)狀態(tài)值來(lái)說(shuō)明搜索的狀態(tài),如果模板搜索成功,則返回0,如果搜索不成功,則返回1,如果搜索的文件不存在,則返回2。我們利用這些返回值就可進(jìn)行一些自動(dòng)化的文本處理工作。
grep正則表達(dá)式元字符集(基本集)
^
錨定行的開(kāi)始 如:'^grep'匹配所有以grep開(kāi)頭的行。
$
錨定行的結(jié)束 如:'grep$'匹配所有以grep結(jié)尾的行。
匹配一個(gè)非換行符的字符 如:'gr.p'匹配gr后接一個(gè)任意字符,然后是p。
*
匹配零個(gè)或多個(gè)先前字符 如:'*grep'匹配所有一個(gè)或多個(gè)空格后緊跟grep的行。 .*一起用代表任意字符。
[]
匹配一個(gè)指定范圍內(nèi)的字符,如'[Gg]rep'匹配Grep和grep。
[^]
匹配一個(gè)不在指定范圍內(nèi)的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一個(gè)字母開(kāi)頭,緊跟rep的行。
?
\(..\)
標(biāo)記匹配字符,如'\(love\)',love被標(biāo)記為1。
\<
錨定單詞的開(kāi)始,如:'\<grep'匹配包含以grep開(kāi)頭的單詞的行。
\>
錨定單詞的結(jié)束,如'grep\>'匹配包含以grep結(jié)尾的單詞的行。
x\{m\}
重復(fù)字符x,m次,如:'0\{5\}'匹配包含5個(gè)o的行。
x\{m,\}
重復(fù)字符x,至少m次,如:'o\{5,\}'匹配至少有5個(gè)o的行。
x\{m,n\}
重復(fù)字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配5–10個(gè)o的行。
\w
匹配文字和數(shù)字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零個(gè)或多個(gè)文字或數(shù)字字符,然后是p。
\W
\w的反置形式,匹配一個(gè)或多個(gè)非單詞字符,如點(diǎn)號(hào)句號(hào)等。
\b
單詞鎖定符,如: '\bgrep\b'只匹配grep。
3. 用于egrep和 grep -E的元字符擴(kuò)展集
+
匹配一個(gè)或多個(gè)先前的字符。如:'[a-z]+able',匹配一個(gè)或多個(gè)小寫(xiě)字母后跟able的串,如loveable,enable,disable等。
?
匹配零個(gè)或多個(gè)先前的字符。如:'gr?p'匹配gr后跟一個(gè)或沒(méi)有字符,然后是p的行。
a|b|c
匹配a或b或c。如:grep|sed匹配grep或sed
()
分組符號(hào),如:love(able|rs)ov+匹配loveable或lovers,匹配一個(gè)或多個(gè)ov。
x{m},x{m,},x{m,n}
作用同x\{m\},x\{m,\},x\{m,n\}
2014-12-02
root@www ~]# grep [-acinv] [--color=auto] '搜尋字符串' filename
選項(xiàng)與參數(shù):
-a :將 binary 文件以 text 文件的方式搜尋數(shù)據(jù)
-c :計(jì)算找到 '搜尋字符串' 的次數(shù)
-i :忽略大小寫(xiě)的不同,所以大小寫(xiě)視為相同
-n :順便輸出行號(hào)
-v :反向選擇,亦即顯示出沒(méi)有 '搜尋字符串' 內(nèi)容的那一行!
--color=auto :可以將找到的關(guān)鍵詞部分加上顏色的顯示喔!
2014-12-02
\
? ?
將下一個(gè)字符標(biāo)記為一個(gè)特殊字符、或一個(gè)原義字符、或一個(gè)向后引用、或一個(gè)八進(jìn)制轉(zhuǎn)義符。例如,“\\n”匹配\n。“\n”匹配換行符。序列“\\”匹配“\”而“\(”則匹配“(”。
? ?
^
? ?
匹配輸入字符串的開(kāi)始位置。如果設(shè)置了RegExp對(duì)象的Multiline屬性,^也匹配“\n”或“\r”之后的位置。
? ?
$
? ?
匹配輸入字符串的結(jié)束位置。如果設(shè)置了RegExp對(duì)象的Multiline屬性,$也匹配“\n”或“\r”之前的位置。
? ?
*
? ?
匹配前面的子表達(dá)式零次或多次(大于等于0次)。例如,zo*能匹配“z”,“zo”以及“zoo”。*等價(jià)于{0,}。
? ?
+
? ?
匹配前面的子表達(dá)式一次或多次(大于等于1次)。例如,“zo+”能匹配“zo”以及“zoo”,但不能匹配“z”。+等價(jià)于{1,}。
? ?
?
? ?
匹配前面的子表達(dá)式零次或一次。例如,“do(es)?”可以匹配“do”或“does”中的“do”。?等價(jià)于{0,1}。
? ?
{n}
? ?
n是一個(gè)非負(fù)整數(shù)。匹配確定的n次。例如,“o{2}”不能匹配“Bob”中的“o”,但是能匹配“food”中的兩個(gè)o。
? ?
{n,}
? ?
n是一個(gè)非負(fù)整數(shù)。至少匹配n次。例如,“o{2,}”不能匹配“Bob”中的“o”,但能匹配“foooood”中的所有o?!皁{1,}”等價(jià)于“o+”?!皁{0,}”則等價(jià)于“o*”。
? ?
{n,m}
? ?
m和n均為非負(fù)整數(shù),其中n<=m。最少匹配n次且最多匹配m次。例如,“o{1,3}”將匹配“fooooood”中的前三個(gè)o。“o{0,1}”等價(jià)于“o?”。請(qǐng)注意在逗號(hào)和兩個(gè)數(shù)之間不能有空格。
? ?
?
? ?
當(dāng)該字符緊跟在任何一個(gè)其他限制符(*,+,?,{n},{n,},{n,m})后面時(shí),匹配模式是非貪婪的。非貪婪模式盡可能少的匹配所搜索的字符串,而默認(rèn)的貪婪模式則盡可能多的匹配所搜索的字符串。例如,對(duì)于字符串“oooo”,“o+?”將匹配單個(gè)“o”,而“o+”將匹配所有“o”。
? ?
.點(diǎn)
? ?
匹配除“\r\n”之外的任何單個(gè)字符。要匹配包括“\r\n”在內(nèi)的任何字符,請(qǐng)使用像“[\s\S]”的模式。
? ?
(pattern)
? ?
匹配pattern并獲取這一匹配。所獲取的匹配可以從產(chǎn)生的Matches集合得到,在VBScript中使用SubMatches集合,在JScript中則使用$0…$9屬性。要匹配圓括號(hào)字符,請(qǐng)使用“\(”或“\)”。
? ?
(?:pattern)
? ?
匹配pattern但不獲取匹配結(jié)果,也就是說(shuō)這是一個(gè)非獲取匹配,不進(jìn)行存儲(chǔ)供以后使用。這在使用或字符“(|)”來(lái)組合一個(gè)模式的各個(gè)部分是很有用。例如“industr(?:y|ies)”就是一個(gè)比“industry|industries”更簡(jiǎn)略的表達(dá)式。
? ?
(?=pattern)
? ?
正向肯定預(yù)查,在任何匹配pattern的字符串開(kāi)始處匹配查找字符串。這是一個(gè)非獲取匹配,也就是說(shuō),該匹配不需要獲取供以后使用。例如,“Windows(?=95|98|NT|2000)”能匹配“Windows2000”中的“Windows”,但不能匹配“Windows3.1”中的“Windows”。預(yù)查不消耗字符,也就是說(shuō),在一個(gè)匹配發(fā)生后,在最后一次匹配之后立即開(kāi)始下一次匹配的搜索,而不是從包含預(yù)查的字符之后開(kāi)始。
? ?
(?!pattern)
? ?
正向否定預(yù)查,在任何不匹配pattern的字符串開(kāi)始處匹配查找字符串。這是一個(gè)非獲取匹配,也就是說(shuō),該匹配不需要獲取供以后使用。例如“Windows(?!95|98|NT|2000)”能匹配“Windows3.1”中的“Windows”,但不能匹配“Windows2000”中的“Windows”。
? ?
(?<=pattern)
? ?
反向肯定預(yù)查,與正向肯定預(yù)查類(lèi)似,只是方向相反。例如,“(?<=95|98|NT|2000)Windows”能匹配“2000Windows”中的“Windows”,但不能匹配“3.1Windows”中的“Windows”。
? ?
(?<!pattern)
? ?
反向否定預(yù)查,與正向否定預(yù)查類(lèi)似,只是方向相反。例如“(?<!95|98|NT|2000)Windows”能匹配“3.1Windows”中的“Windows”,但不能匹配“2000Windows”中的“Windows”。
? ?
x|y
? ?
匹配x或y。例如,“z|food”能匹配“z”或“food”?!?z|f)ood”則匹配“zood”或“food”。
? ?
[xyz]
? ?
字符集合。匹配所包含的任意一個(gè)字符。例如,“[abc]”可以匹配“plain”中的“a”。
? ?
[^xyz]
? ?
負(fù)值字符集合。匹配未包含的任意字符。例如,“[^abc]”可以匹配“plain”中的“plin”。
? ?
[a-z]
? ?
字符范圍。匹配指定范圍內(nèi)的任意字符。例如,“[a-z]”可以匹配“a”到“z”范圍內(nèi)的任意小寫(xiě)字母字符。
注意:只有連字符在字符組內(nèi)部時(shí),并且出現(xiàn)在兩個(gè)字符之間時(shí),才能表示字符的范圍; 如果出字符組的開(kāi)頭,則只能表示連字符本身.
? ?
[^a-z]
? ?
負(fù)值字符范圍。匹配任何不在指定范圍內(nèi)的任意字符。例如,“[^a-z]”可以匹配任何不在“a”到“z”范圍內(nèi)的任意字符。
? ?
\b
? ?
匹配一個(gè)單詞邊界,也就是指單詞和空格間的位置。例如,“er\b”可以匹配“never”中的“er”,但不能匹配“verb”中的“er”。
? ?
\B
? ?
匹配非單詞邊界。“er\B”能匹配“verb”中的“er”,但不能匹配“never”中的“er”。
? ?
\cx
? ?
匹配由x指明的控制字符。例如,\cM匹配一個(gè)Control-M或回車(chē)符。x的值必須為A-Z或a-z之一。否則,將c視為一個(gè)原義的“c”字符。
? ?
\d
? ?
匹配一個(gè)數(shù)字字符。等價(jià)于[0-9]。
? ?
\D
? ?
匹配一個(gè)非數(shù)字字符。等價(jià)于[^0-9]。
? ?
\f
? ?
匹配一個(gè)換頁(yè)符。等價(jià)于\x0c和\cL。
? ?
\n
? ?
匹配一個(gè)換行符。等價(jià)于\x0a和\cJ。
? ?
\r
? ?
匹配一個(gè)回車(chē)符。等價(jià)于\x0d和\cM。
? ?
\s
? ?
匹配任何空白字符,包括空格、制表符、換頁(yè)符等等。等價(jià)于[ \f\n\r\t\v]。
? ?
\S
? ?
匹配任何非空白字符。等價(jià)于[^ \f\n\r\t\v]。
? ?
\t
? ?
匹配一個(gè)制表符。等價(jià)于\x09和\cI。
? ?
\v
? ?
匹配一個(gè)垂直制表符。等價(jià)于\x0b和\cK。
? ?
\w
? ?
匹配包括下劃線的任何單詞字符。等價(jià)于“[A-Za-z0-9_]”。
? ?
\W
? ?
匹配任何非單詞字符。等價(jià)于“[^A-Za-z0-9_]”。
? ?
\xn
? ?
匹配n,其中n為十六進(jìn)制轉(zhuǎn)義值。十六進(jìn)制轉(zhuǎn)義值必須為確定的兩個(gè)數(shù)字長(zhǎng)。例如,“\x41”匹配“A”。“\x041”則等價(jià)于“\x04&1”。正則表達(dá)式中可以使用ASCII編碼。
? ?
\num
? ?
匹配num,其中num是一個(gè)正整數(shù)。對(duì)所獲取的匹配的引用。例如,“(.)\1”匹配兩個(gè)連續(xù)的相同字符。
? ?
\n
? ?
標(biāo)識(shí)一個(gè)八進(jìn)制轉(zhuǎn)義值或一個(gè)向后引用。如果\n之前至少n個(gè)獲取的子表達(dá)式,則n為向后引用。否則,如果n為八進(jìn)制數(shù)字(0-7),則n為一個(gè)八進(jìn)制轉(zhuǎn)義值。
? ?
\nm
? ?
標(biāo)識(shí)一個(gè)八進(jìn)制轉(zhuǎn)義值或一個(gè)向后引用。如果\nm之前至少有nm個(gè)獲得子表達(dá)式,則nm為向后引用。如果\nm之前至少有n個(gè)獲取,則n為一個(gè)后跟文字m的向后引用。如果前面的條件都不滿(mǎn)足,若n和m均為八進(jìn)制數(shù)字(0-7),則\nm將匹配八進(jìn)制轉(zhuǎn)義值nm。
? ?
\nml
? ?
如果n為八進(jìn)制數(shù)字(0-7),且m和l均為八進(jìn)制數(shù)字(0-7),則匹配八進(jìn)制轉(zhuǎn)義值nml。
? ?
\un
? ?
匹配n,其中n是一個(gè)用四個(gè)十六進(jìn)制數(shù)字表示的Unicode字符。例如,\u00A9匹配版權(quán)符號(hào)(©)。
? ?
2014-12-02
網(wǎng)友采納
熱心網(wǎng)友
在linux中g(shù)rep命令是非常有用的,它和管道(|)配合使用,非常強(qiáng)大,用于搜索文本文件.如果想要在幾個(gè)文本文件中查找一字符串,可以使用‘grep’命令。‘grep’在文本中搜索指定的字符串。
假設(shè)您正在‘/usr/src/linux/Documentation’目錄下搜索帶字符串‘magic’的文件:
$ grep magic /usr/src/linux/Documentation/*
sysrq.txt:* How do I enable the magic SysRQ key?
sysrq.txt:* How do I use the magic SysRQ key?
其中文件‘sysrp.txt’包含該字符串,討論的是 SysRQ 的功能。
默認(rèn)情況下,‘grep’只搜索當(dāng)前目錄。如果此目錄下有許多子目錄,‘grep’會(huì)以如下形式列出:
grep: sound: Is a directory
這可能會(huì)使‘grep’的輸出難于閱讀。這里有兩種解決的辦法:
明確要求搜索子目錄:grep -r
或忽略子目錄:grep -d skip
當(dāng)然,如果預(yù)料到有許多輸出,您可以通過(guò) 管道 將其轉(zhuǎn)到‘less’上閱讀:
$ grep magic /usr/src/linux/Documentation/* | less
這樣,您就可以更方便地閱讀。
有一點(diǎn)要注意,您必需提供一個(gè)文件過(guò)濾方式(搜索全部文件的話用 *)。如果您忘了,‘grep’會(huì)一直等著,直到該程序被中斷。如果您遇到了這樣的情況,按 <CTRL c> ,然后再試。
下面是一些有意思的命令行參數(shù):
grep -i pattern files :不區(qū)分大小寫(xiě)地搜索。默認(rèn)情況區(qū)分大小寫(xiě),
grep -l pattern files :只列出匹配的文件名,
grep -L pattern files :列出不匹配的文件名,
grep -w pattern files :只匹配整個(gè)單詞,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’),
grep -C number pattern files :匹配的上下文分別顯示[number]行,
grep pattern1 | pattern2 files :顯示匹配 pattern1 或 pattern2 的行,
grep pattern1 files | grep pattern2 :顯示既匹配 pattern1 又匹配 pattern2 的行。
這里還有些用于搜索的特殊符號(hào):
\< 和 \> 分別標(biāo)注單詞的開(kāi)始與結(jié)尾。
例如:
grep man * 會(huì)匹配 ‘Batman’、‘manic’、‘man’等,
grep '\<man' * 匹配‘manic’和‘man’,但不是‘Batman’,
grep '\<man\>' 只匹配‘man’,而不是‘Batman’或‘manic’等其他的字符串。
'^':指匹配的字符串在行首,
'$':指匹配的字符串在行尾,
如果您不習(xí)慣命令行參數(shù),可以試試圖形界面的‘grep’,如 reXgrep 。這個(gè)軟件提供 AND、OR、NOT 等語(yǔ)法,還有漂亮的按鈕 :-) 。如果您只是需要更清楚的輸出,不妨試試 fungrep 。
評(píng)論 | 給力18不給力