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

完全掌握 grep 指令

這是一份關於 `grep` 指令的指南,它在 Linux 中用於在文字檔案或標準輸入中搜索特定模式。透過此工具,您可以有效地找到和篩選所需的文字。

主要選項

嘗試組合 `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')
| 或運算符(兩個模式之一) `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' 消息。


相同類別命令