這組命令以指定模式搜索文件,并通知用戶在什么文件中搜索到與指定的模式匹配的字符串,并打印出所有包含該字符串的文本行,在該文本行的最前面是該行所在的文件名。 grep 命令一次只能搜索一個(gè)指定的模式;egrep 命令檢索擴(kuò)展的正則表達(dá)式(包括表達(dá)式組和可選項(xiàng));fgrep 命令檢索固定字符串,它不識(shí)別正則表達(dá)式,是快速搜索命令。
這組命令在搜索與定位文件中特定的主題方面非常有用。要搜索的模式可以被認(rèn)為是一些關(guān)鍵詞,您可以用它們來(lái)搜索文件中包含的這些關(guān)鍵詞。編寫(xiě)程序時(shí),可以用它來(lái)尋找某一個(gè)函數(shù),或是相關(guān)的詞組。grep 命令的搜索功能比 fgrep 強(qiáng)大,因?yàn)?grep 命令的搜索模式可以是正則表達(dá)式,而 fgrep 卻不能。
該組命令中的每一個(gè)命令都有一組選項(xiàng),利用這些選項(xiàng)可以改變其輸出方式。例如,可以在搜索到的文本行上加入行號(hào),或者只輸出文本行的行號(hào),或者輸出所有與搜索模式不匹配的文本行,或只簡(jiǎn)單地輸出已搜索到指定模式的文件名,并且可以指定在查找模式時(shí)忽略大小寫(xiě)。
這組命令在指定氖淙胛募脅檎矣肽J狡ヅ淶男小H綣揮兄付ㄎ募虼穎曜際淙?中讀取。正常情況下,每個(gè)匹配的行被顯示到標(biāo)準(zhǔn)輸出。如果要查找的文件是多個(gè),則在每一行輸出之前加上文件名。
語(yǔ)法: grep [選項(xiàng)] [查找模式] [文件名1,文件名2,……] egrep [選項(xiàng)] [查找模式] [文件名1,文件名2,……] fgrep [選項(xiàng)] [查找模式] [文件名1,文件名2,……]
該命令的各選項(xiàng)含義如下:
-E 每個(gè)模式作為一個(gè)擴(kuò)展的正則表達(dá)式對(duì)待。 -F 每個(gè)模式作為一組固定字符串對(duì)待(以新行分隔),而不作為正則表達(dá)式。 -b 在輸出的每一行前顯示包含匹配字符串的行在文件中的字節(jié)偏移量。 -c 只顯示匹配行的數(shù)量。 -i 比較時(shí)不區(qū)分大小寫(xiě)。 -h 在查找多個(gè)文件時(shí),指示grep不要將文件名加入到輸出之前。 -l 顯示首次匹配串所在的文件名并用換行符將其隔開(kāi)。 當(dāng)在某文件中多次出現(xiàn)匹配串時(shí),不重復(fù)顯示此文件名。 -n 在輸出前加上匹配串所在行的行號(hào)(文件首行行號(hào)為1)。 -v 只顯示不包含匹配串的行。 -x 只顯示整行嚴(yán)格匹配的行。 -e expression 指定檢索使用的模式。用于防止以“-”開(kāi)頭的模式被解釋為命令選項(xiàng)。 -f expfile 從expfile文件中獲取要搜索的模式,一個(gè)模式占一行。
對(duì)該組命令的使用還需注意以下方面:
在命令后鍵入搜索的模式,再鍵入要搜索的文件。其中,文件名列表中也可以使用特殊字符,如 “*” 等,用來(lái)生成文件名列表。如果想在搜索的模式中包含有空格的字符串,可以用單引號(hào)把要搜索的模式括起來(lái),用來(lái)表明搜索的模式是由包含空格的字符串組成。否則,Shell 將把空格認(rèn)為是命令行參數(shù)的定界符,而 grep 命令將把搜索模式中的單詞解釋為文件名列表中的一部分。在下面的例子中,grep 命令在文件 example 中搜索模式 “text file”。
grep ’text file’ example
用戶可以在命令行上用Shell特殊字符來(lái)生成將要搜索的文件名列表。在下面的例子中,特殊字符“*”用來(lái)生成一個(gè)文件名列表,該列表包含當(dāng)前目錄下所有的文件。該命令將搜索出當(dāng)前目錄下所有文件中與模式匹配的行。
grep data *
特殊字符在搜索一組指定的文件時(shí)非常有用。例如,如果想搜索所有的C程序源文件中特定的模式,您可以用“*.c”來(lái)指定文件名列表。假設(shè)用戶的 C程序中包含一些不必要的轉(zhuǎn)向語(yǔ)句(goto語(yǔ)句),想要找到這些語(yǔ)句,可以用如下的命令來(lái)搜索并顯示所有包含 goto語(yǔ)句的代碼行:
grep goto *.c
用戶可以在命令行上鍵入搜索模式,也可以使用 -f 選項(xiàng)從指定文件中讀取要搜索的模式。在文件中,每個(gè)搜索模式占一行。如果經(jīng)常要搜索一組常見(jiàn)字符串時(shí),這個(gè)功能非常有用。在下面的例子中,用戶要在文件 exam 中搜索字符串 “editor” 和 “create”,就把要搜索的模式放置在文件 mypats 中,然后,grep 命令從文件 mypats 中讀取要搜索的模式。
grep -f mypats exam
posted on 2008-03-11 14:07
megax 閱讀(1509)
評(píng)論(0) 編輯 收藏 引用 所屬分類:
轉(zhuǎn)貼收集