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

grep: 計算匹配的行數

grep 命令是一個強大的實用程式,用於在文字檔案或標準輸入中搜尋特定模式。特別是使用 `-c` (或 `--count`) 選項時,您可以有效地計算與模式匹配的總行數。這在日誌分析、程式碼審查和數據篩選等各種情況下都非常有用。

概述

grep 是 Global Regular Expression Print 的縮寫,它使用正規表達式來搜尋文字並輸出匹配的行。`-c` 選項不會輸出匹配的行本身,而是僅以數字形式返回匹配的行數。

主要特點

  • 僅輸出與特定模式匹配的行數
  • 支援正規表達式,實現靈活的模式搜尋
  • 可與區分大小寫、反向匹配等各種搜尋條件組合使用
  • 支援搜尋多個檔案或目錄中的檔案

主要選項

與 grep -c 一起經常使用或影響計數結果的主要選項。

計數/搜尋控制

生成的命令:

請試著組合命令。

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

`grep` 執行命令。

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

使用範例

使用 grep -c 命令的各種範例。

計算特定檔案中匹配模式的行數

grep -c "error" sample.log

計算 sample.log 檔案中包含 "error" 字串的行數。

計算忽略大小寫的匹配模式的行數

grep -ci "warning" sample.log

計算 sample.log 檔案中包含 "warning" 或 "Warning" 等忽略大小寫的行數。

計算多個檔案中匹配模式的行數

grep -c "keyword" *.txt

計算當前目錄中所有 .txt 檔案中包含 "keyword" 的行數,每個檔案分別計數。

遞迴計算目錄內檔案中匹配模式的行數

grep -rc "function" .

計算當前目錄及所有子目錄檔案中包含 "function" 字串的行數。

計算不匹配模式的行數

grep -cv "success" sample.log

計算 sample.log 檔案中不包含 "success" 字串的行數。

通過管道輸入並計算行數

ls -l | grep -c "root"

計算 ls -l 命令輸出中包含 "root" 的行數。

提示與注意事項

為了更有效地使用 grep -c 命令而提供的提示和注意事項。

grep -c 與 wc -l 的區別

grep -c 僅計算匹配模式的行,而 `grep "pattern" file | wc -l` 則是將 `grep` 的輸出(所有匹配的行)傳遞給 `wc -l` 來計算行數。在大多數情況下,`grep -c` 更有效率。但是,如果需要對 `grep` 過濾後的行進行額外處理,則後者的方法可能更有用。

  • grep -c: 僅計數匹配模式的行。更快、更直接。
  • grep ... | wc -l: 計數 grep 輸出的所有行。適用於額外的管道處理。

利用正規表達式

grep 支援強大的正規表達式。您不僅可以搜尋特定單詞,還可以利用行首 (`^`)、行尾 (`$`)、特定字元集 (`[abc]`)、重複 (`*`, `+`) 等來搜尋和計數複雜模式。若要使用擴充正規表達式,請添加 `-E` 選項。

控制檔案名輸出

搜尋多個檔案時,`-c` 選項預設會輸出每個檔案名及其計數結果。如果您想省略檔案名並僅獲取總計,可以組合使用 `awk`,例如 `grep -c "pattern" file1 file2 | awk '{s+=$1} END {print s}'`,或者使用 `find . -name "*.log" -exec grep -c "pattern" {} + | awk '{s+=$1} END {print s}'`。


相同類別命令