首頁 > 文字處理與搜尋 > grep

徹底掌握 grep 指令

本指南介紹如何在 Linux 中使用 `grep` 指令,從文字檔案或標準輸入中搜尋特定模式。透過此工具,您可以有效地查找和過濾所需的文字。

主要選項

組合 `grep` 指令的各種選項,搜尋您想要的文字。

1. 基本搜尋

2. 搜尋選項

3. 輸出選項

4. 遞迴搜尋

生成的命令:

請試著組合命令。

這個 Django 應用程序是一個技術指南文檔,旨在為用戶輕鬆解釋 Linux 的各種命令。

`grep` 執行命令。

請將上述選項組合在一起,與 AI 一同虛擬執行命令。

正規表達式基礎

`grep` 指令支援正規表達式 (Regular Expressions),用於強大的文字搜尋。使用正規表達式可以輕鬆找出複雜的模式。

常用正規表達式元字元 在正規表達式中具有特殊含義的字元。
字元 說明 範例
. 任何單一字元 (換行符除外) `a.b` (acb, amb 等)
* 前一個字元重複 0 次或多次 `ab*c` (ac, abc, abbc 等)
+ 前一個字元重複 1 次或多次 `ab+c` (abc, abbc 等)
? 前一個字元出現 0 次或 1 次 `ab?c` (ac, abc)
^ 行的開頭 `^start` (以 start 開頭的行)
$ 行的結尾 `end$` (以 end 結尾的行)
[abc] 括號內的任何一個字元 `[aeiou]` (母音)
[a-z] 範圍內的任何一個字元 `[0-9]` (數字)
[^abc] 除括號內字元以外的任何字元 `[^0-9]` (非數字字元)
\b 單字邊界 `\bword\b` (精確匹配 'word' 單字)
| OR 運算 (兩個模式之一) `cat|dog` ('cat' 或 'dog')

基本正規表達式 (BRE) 與擴展正規表達式 (ERE)

`grep` 預設使用 BRE。若要將 `+`、`?`、`|`、`(`、`)` 等字元作為特殊含義使用,必須在其前面加上反斜線 (`\`)。使用 `-E` 選項可啟用 ERE 模式,此時這些字元無需反斜線即可使用。`-P` 選項則提供更強大的 PCRE 功能。

使用範例

透過 `grep` 指令的實用範例,練習文字搜尋。

在日誌檔中搜尋 'error'

grep 'error' /var/log/syslog

輸出 `syslog` 檔案中所有包含 'error' 字串的行。

不區分大小寫搜尋 'failed' 並輸出行號

grep -in 'failed' /var/log/auth.log

不區分大小寫搜尋 'failed',並顯示結果及其行號。

僅輸出不包含特定模式的行

grep -v '^#' /etc/nginx/nginx.conf

輸出 `nginx.conf` 檔案中除了以註釋符號 (#) 開頭的行之外的所有行。

包含子目錄在 '.conf' 檔案中搜尋 'server_name'

grep -r 'server_name' *.conf

在目前目錄及其所有子目錄中,遞迴搜尋副檔名為 '.conf' 的檔案中包含 'server_name' 模式的內容。

尋找特定進程 (結合 ps 與管道)

ps aux | grep apache2

從 `ps aux` 指令的結果中,過濾並查看與 'apache2' 相關的進程。

在多個檔案中搜尋 'warning' 或 'critical'

grep -E 'warning|critical' /var/log/syslog /var/log/kern.log

使用正規表達式的 OR (|) 運算子,在多個日誌檔中搜尋 'warning' 或 'critical' 訊息。



相同類別命令