UNIX - grep 指令

【功能】

在檔案內找尋特定的字串

【語法】

grep [options ] limited regular expression [file...];

【說明】

grep 指令會去尋找檔案中那一行有指定的字串,找到後將該行印出,倘若給予的檔案不只一個時,則在找到時先將檔案名稱印出。

在使用常規式(limited regular expression)時,須謹慎使用下面幾個對 shell有特別意義的字元 $、*、[、^、|、(、)、\,故較為安全的方法是配合單引號使用,若沒有給予檔案名稱file時,grep指令會從標準輸入讀取資料。

【選項】

選 項 說 明
-b(block) 在印出該行之前先印出所在區塊(block)的號碼。並且可用來找出該特定的文字所在的位置(每一區塊的編號從 0 開始,而每個區塊的大小則為 512 個字元)。
-c(count) 只印出含有特定文字行的次數(各檔案會分別印出)。
-i(ignore) 比較時不會去分辨大小寫的不同。
-h 在許多檔案中搜尋時不印出檔名。
-l 在找到特定字元時只印出一次檔名(不印出該行,且不會每次都印出)。
-n(number) 印出該行之前會先顯示行號(第一行的行號為 1)。
-s(silent) 遇到不存在或無權力讀取的檔案時不會印出錯誤訊息。
-v 只會印出那些「不」包含特定字串的行(與原來的效果剛好相反)。

★註: 選項 -i、-h 是在 SVR4 版本時才開始提供。

【傳回值】

0 - 有找到相同的字串。
1 - 沒有找到相同的字串。
2 - 語法錯誤或遇到無法存取的檔案。

【範例】

1. 找尋字串所在的行:

grep car boston
grep 'car' boston

上面二個 grep 指令是完全相同的命令,都是要求 grep 指令從 boston 這個檔案中找尋含有 car 三個字母所組成的單字。若檔案中含有 car 或 cartoon 等的字串都會符合所要求的條件,除非在第二個例子中 'car' 的 r 與第二個單引號間加入空白字元如 'car ',才會有所區別。

2. 計算出現的次數:

grep -c car boston

由於增加了選項 -c,因此輸出結果將不會印出包含有 car的行,而是印出在檔案內找到行數。

3. 在多個檔案內找尋那個檔案會有指定的字串:

grep -l main *.c

找出含有 main 字串的檔案名稱(.c)。由於 -l 選項的影響,結果只會印出檔案名稱。

網路電視    旅遊景點    算命    象棋殘局    回首頁