自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Linux grep 命令到底有多強(qiáng)?90% 的人只會(huì)用最簡(jiǎn)單的用法!

系統(tǒng) Linux
今天,我們就用 大白話 + 實(shí)戰(zhàn) 帶你徹底學(xué)會(huì) grep,讓你告別低效查找,成為 Linux 命令行高手!

你有沒(méi)有遇到過(guò)這種情況?

  • 日志文件太大,想找某個(gè)關(guān)鍵字,翻得眼花繚亂?
  • 代碼里某個(gè)變量到底在哪改的,找半天都沒(méi)找到?
  • 成百上千個(gè)文件里,想找某個(gè)特定的內(nèi)容,手動(dòng)翻找效率太低?

如果你還在一行行地 Ctrl + F 查找內(nèi)容,那你真的該認(rèn)識(shí)一下 Linux 里最強(qiáng)大的查找工具——grep!它不僅能幫你 快速定位 關(guān)鍵內(nèi)容,還能 支持正則匹配、多文件查找、高亮顯示,讓你在海量數(shù)據(jù)中一秒找到目標(biāo)!

今天,我們就用 大白話 + 實(shí)戰(zhàn) 帶你徹底學(xué)會(huì) grep,讓你告別低效查找,成為 Linux 命令行高手!

一、grep 到底是干嘛的?

一句話總結(jié): grep 是 Linux 里的 文本搜索神器,能在 文件、日志、代碼 里 快速搜索 你想找的內(nèi)容。

比如,你有個(gè)日志文件 server.log,想找出里面 出現(xiàn) “error” 的所有行,如果你用鼠標(biāo)翻,可能要幾分鐘,但用 grep 只要 1 秒鐘:

grep "error" server.log

是不是很酷?接下來(lái),我們就來(lái)看看 grep 的常用玩法!

二、最常用的 grep 語(yǔ)法

1. 基本用法:查找關(guān)鍵詞

查找文件中包含某個(gè)關(guān)鍵詞的行

grep "hello" myfile.txt

解釋:這個(gè)命令會(huì)在 myfile.txt 里查找 包含 "hello" 的所有行,然后把結(jié)果打印出來(lái)。

2. 忽略大小寫(xiě)

大小寫(xiě)不敏感匹配(比如 Error 和 error 都能找到)

grep -i "error" server.log

解釋:-i 讓 grep忽略大小寫(xiě),比如 ERROR、Error、error,統(tǒng)統(tǒng)都能匹配出來(lái)!

3. 遞歸查找:在多個(gè)文件中查找

想找某個(gè)關(guān)鍵詞在哪個(gè)文件里出現(xiàn)了?

grep -r "main()" .

解釋:

  • -r 讓 grep 進(jìn)入 當(dāng)前目錄的所有文件和子目錄 里查找 "main()"。
  • 這個(gè)對(duì) 查找代碼里的某個(gè)函數(shù)、某個(gè)變量 非常有用!

4. 顯示行號(hào)

查找時(shí)順便顯示行號(hào),方便定位

grep -n "password" config.txt

解釋:-n 讓 grep 顯示匹配的行 在文件里的行號(hào),這樣你就能一眼找到它在哪。

5. 只顯示匹配的文件

當(dāng)你在一堆文件里找內(nèi)容時(shí),只想知道哪些文件包含這個(gè)關(guān)鍵詞

grep -l "TODO" *.c

解釋:-l 只顯示 包含 "TODO" 的文件名,不會(huì)輸出具體匹配內(nèi)容。

6. 反向查找(排除某些內(nèi)容)

想找不包含某個(gè)關(guān)鍵詞的行?

grep -v "debug" log.txt

解釋:-v 讓 grep排除 包含 "debug" 的行,輸出 不含 "debug" 的內(nèi)容。

7. 顯示匹配的上下文

只看匹配行可能不夠,想看看前后幾行內(nèi)容?

grep -C 5 "error" server.log

解釋:-C 5 讓 grep顯示匹配行前后 5 行,這樣你就能看到錯(cuò)誤前后發(fā)生了什么。

8. 高亮顯示匹配內(nèi)容

讓匹配的部分更醒目

grep --color "error" server.log

解釋:--color 讓 grep高亮顯示匹配的內(nèi)容,這樣你就能更快地看到關(guān)鍵部分。

注意:加不加 --color 參數(shù),可能顯示結(jié)果都一樣,因?yàn)橄到y(tǒng)默認(rèn)啟用了 --color=auto 參數(shù)。

9. 結(jié)合 -c,統(tǒng)計(jì)匹配的行數(shù)

統(tǒng)計(jì) log.txt 里包含 "error" 的行數(shù)

grep -c "error" log.txt

解釋:-c只統(tǒng)計(jì)匹配的行數(shù),不輸出具體內(nèi)容。

適用場(chǎng)景:快速檢查某個(gè)關(guān)鍵詞在文件中出現(xiàn)的次數(shù),比如日志里有多少行是錯(cuò)誤信息。

10. 結(jié)合 -o,只輸出匹配的關(guān)鍵內(nèi)容

從日志中提取所有 IP 地址

grep -oE "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+" logs.txtgrep -oE "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+" logs.txt

解釋:

  • -o只輸出匹配的部分,而不是整行內(nèi)容。
  • -E啟用正則,匹配 IPv4 地址。

適用場(chǎng)景:當(dāng)你只想提取某些關(guān)鍵信息時(shí),比如 提取 IP、URL、郵箱等。

11. 結(jié)合 -m,限制匹配的行數(shù)

?? 查找文件中的 "error",但最多只輸出前 3 行

grep -m 3 "error" server.log

解釋:-m 3最多匹配 3 行,即使文件里有更多匹配項(xiàng),也只顯示 3 行。

適用場(chǎng)景:當(dāng)你只想看 部分匹配內(nèi)容,避免輸出太多信息時(shí)。

12. 結(jié)合 -w,精確匹配完整單詞

只匹配完整的 "error",不匹配 "error_code" 或 "myerror"

grep -w "error" server.log

解釋:-w匹配完整單詞,比如 "error",但不會(huì)匹配 "myerror" 或 "error_code"。

適用場(chǎng)景:查找變量名、關(guān)鍵字,避免匹配到無(wú)關(guān)內(nèi)容。

13. 結(jié)合 -F,精準(zhǔn)匹配,不使用正則

查找包含 [ERROR] 的日志行

grep -F "[ERROR]" logs.txt

解釋:

  • -F把搜索內(nèi)容當(dāng)作普通字符串,不會(huì)當(dāng)成正則表達(dá)式解析。
  • 避免 [ ] . * + 這些符號(hào)被誤認(rèn)為正則表達(dá)式。

適用場(chǎng)景:當(dāng)搜索的內(nèi)容包含 特殊字符,但你不想用正則時(shí)。

三、進(jìn)階用法:組合 grep 選項(xiàng),讓查找更高效!

在實(shí)際使用中,單獨(dú)使用 grep 可能不夠靈活,很多時(shí)候我們需要 組合多個(gè)選項(xiàng),讓 grep 更加強(qiáng)大!下面是幾種常見(jiàn)的組合用法:

1. 結(jié)合 -r 和 -n,遞歸查找并顯示行號(hào)

?? 在當(dāng)前目錄及子目錄中,查找 "error",并顯示行號(hào)

grep -rn "error" .   

// 命令解釋:在當(dāng)前目錄 (.) 及其所有子目錄中遞歸 (-r),查找包含 "error" 的文件,并顯示匹配的行號(hào) (-n)。

解釋:-r 遞歸查找,-n 顯示行號(hào),方便快速定位錯(cuò)誤位置。

2. 結(jié)合 -v 和 -i,排除某些內(nèi)容,并忽略大小寫(xiě)

查找日志中所有包含 "warning" 但不包含 "debug" 的行

grep -i "warning" server.log | grep -v "debug"

解釋:

  • -i 讓 "warning" 大小寫(xiě)不敏感匹配(WARNING、Warning 都能匹配)。
  • grep -v "debug"把包含 "debug" 的行過(guò)濾掉,只留下我們關(guān)心的 warning 信息。

3. 結(jié)合 -l 和 -r,快速找到含有關(guān)鍵字的文件

在項(xiàng)目目錄中,找出所有包含 "TODO" 關(guān)鍵字的文件

grep -rl "TODO" .

命令解釋:在當(dāng)前目錄 (.) 及其所有子目錄中遞歸 (-r) 搜索包含 "TODO" 的文件,并僅顯示匹配的文件名 (-l),而不顯示具體內(nèi)容。

解釋:

  • -r 遞歸查找文件。
  • -l 只顯示 文件名,不會(huì)顯示匹配的具體內(nèi)容。
  • 適用于 查找代碼里哪些文件包含某個(gè)關(guān)鍵詞,特別方便!

4. 結(jié)合 -A / -B / -C,按上下文查找

  • 找出包含 "error" 的日志,并顯示前后 5 行
grep -C 5 "error" server.log
  • 找出包含 "error" 的日志,并顯示前 5 行
grep -B 5 "error" server.log
  • 找出包含 "error" 的日志,并顯示后 5 行
grep -A 5 "error" server.log

解釋:

  • -C 讓 grep顯示匹配行的前后 5 行。
  • -B 只顯示 前 5 行(B = Before)。
  • -A 只顯示 后 5 行(A = After)。
  • 適用于 查找某個(gè)錯(cuò)誤發(fā)生的上下文信息,有助于分析問(wèn)題。

5. 結(jié)合 |(管道符),把 grep 結(jié)果再過(guò)濾

查找日志中所有 "error" 相關(guān)內(nèi)容,但排除 "timeout"

grep "error" server.log | grep -v "timeout"

解釋:

  • 先用 grep "error" 找到所有包含 "error" 的行。
  • 再用 grep -v "timeout"過(guò)濾掉包含 "timeout" 的行。
  • 適用于 日志分析、過(guò)濾關(guān)鍵數(shù)據(jù)。

6. 結(jié)合 -nRI,遞歸查找文本文件并顯示行號(hào)

在項(xiàng)目代碼中查找某個(gè)函數(shù),但忽略二進(jìn)制文件

grep -nRI "init_database" .

解釋:

  • -n顯示行號(hào),方便快速定位。
  • -R遞歸查找,會(huì)進(jìn)入子目錄搜索所有文件。
  • -I忽略二進(jìn)制文件,避免 .o、.so 這些非文本文件干擾搜索結(jié)果。

適用場(chǎng)景:在 C/C++、Python、Shell 項(xiàng)目 里快速查找函數(shù)、變量的定義、以及任何其他關(guān)鍵詞。

7. 結(jié)合 xargs,批量查找多個(gè)關(guān)鍵詞

場(chǎng)景1: 在所有 .c 文件中查找 "error" 或 "warning"

echo -e "error\nwarning" | xargs -I {} grep -rn {} *.c

解釋:

  • echo -e "error\nwarning" 生成 兩個(gè)關(guān)鍵詞。
  • xargs -I {} : 把關(guān)鍵詞一個(gè)個(gè)傳給 grep 進(jìn)行匹配。

適用場(chǎng)景:當(dāng)你需要 查找多個(gè)關(guān)鍵詞 時(shí),比如找 "error" 和 "warning",但不想寫(xiě)多個(gè) grep 命令。

場(chǎng)景2:刪除所有包含 "DEBUG" 的日志文件

grep -rl "DEBUG" /var/log | xargs rm -f

解釋:

  • grep -rl "DEBUG" /var/log 查找 包含 "DEBUG" 的日志文件
  • xargs rm -f 把這些文件名傳給 rm 命令,批量刪除

注意:此命令不可逆,建議先用 grep -rl 確認(rèn)文件后再執(zhí)行刪除!

8. 結(jié)合 tail,實(shí)時(shí)監(jiān)控日志中的關(guān)鍵字

實(shí)時(shí)監(jiān)控日志,并只顯示包含 "error" 的行

tail -f /var/log/syslog | grep --color "error"

解釋:

  • tail -f持續(xù)輸出最新的日志,不需要每次手動(dòng)運(yùn)行。
  • grep --color "error"實(shí)時(shí)匹配 "error",并高亮顯示。

適用場(chǎng)景:

  • 服務(wù)器日志實(shí)時(shí)監(jiān)控,及時(shí)發(fā)現(xiàn)錯(cuò)誤。
  • 監(jiān)控 Web 服務(wù)器訪問(wèn)日志(如 nginx、apache)。

9. 查找日志中所有 IP 地址(并去重)

從日志文件中提取所有出現(xiàn)過(guò)的 IP 地址,并去重

grep -oE "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+" /var/log/syslog | sort | uniq

解釋:

  • -o只輸出匹配的部分,不會(huì)打印整行日志,只顯示匹配的 IP 地址。
  • -E啟用擴(kuò)展正則,用于匹配 IPv4 地址格式(四段數(shù)字,每段 0-255 之間)。
  • sort排序,讓相同的 IP 挨在一起,方便去重。
  • uniq去重,讓每個(gè) IP 只出現(xiàn)一次,防止重復(fù)數(shù)據(jù)干擾分析。

適用場(chǎng)景:

  • 統(tǒng)計(jì)日志中有哪些訪問(wèn) IP,分析訪問(wèn)來(lái)源。
  • 用于網(wǎng)絡(luò)安全、服務(wù)器日志分析,查看可疑 IP。

如果你想 統(tǒng)計(jì)每個(gè) IP 出現(xiàn)的次數(shù),可以這樣做:

grep -oE "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+" /var/log/syslog | sort | uniq -c | sort -nr

解釋:

  • uniq -c統(tǒng)計(jì)去重后的 IP 出現(xiàn)次數(shù)。
  • sort -nr按出現(xiàn)次數(shù)從高到低排序,快速找到最常見(jiàn)的 IP。

適用場(chǎng)景:

  • 識(shí)別 訪問(wèn)頻率最高的 IP,防止惡意攻擊(如 DDoS)。
  • 監(jiān)控日志,分析服務(wù)器訪問(wèn)情況。

10. 結(jié)合 grep 和 cut,提取某列數(shù)據(jù)

場(chǎng)景1:從 CSV 文件中提取第二列的用戶 ID,并統(tǒng)計(jì)不同 ID 的個(gè)數(shù)

grep "成功" logs.csv | cut -d',' -f2 | sort | uniq -c

解釋:

  • grep "成功" :先篩選出包含 "成功" 的行。
  • cut -d',' -f2 : 提取 CSV 里用逗號(hào)分隔的第二列(假設(shè)是用戶 ID)。
  • sort | uniq -c 統(tǒng)計(jì)不同用戶 ID 的出現(xiàn)次數(shù)。

適用場(chǎng)景:

  • 數(shù)據(jù)分析,統(tǒng)計(jì)不同用戶 ID 的成功請(qǐng)求次數(shù)。
  • 處理日志文件,提取和篩選有用數(shù)據(jù)。

場(chǎng)景2:提取 Nginx 訪問(wèn)日志的 URL

示例日志(access.log):

192.168.1.1 - - [01/Feb/2024:12:34:56] "GET /index.html HTTP/1.1" 200 512 "-"
192.168.1.2 - - [01/Feb/2024:12:35:00] "GET /about.html HTTP/1.1" 200 432 "-"
192.168.1.3 - - [01/Feb/2024:12:35:10] "GET /contact.html HTTP/1.1" 200 654 "-"

提取所有 GET 請(qǐng)求的 URL:

grep "GET" access.log | cut -d'"' -f2 | cut -d' ' -f2

解釋:

  • grep "GET" 過(guò)濾出 HTTP GET 請(qǐng)求
  • cut -d'"' -f2 提取 雙引號(hào)內(nèi) 的內(nèi)容
  • cut -d' ' -f2 提取 第二個(gè)字段(URL)

輸出:

/index.html
/about.html
/contact.html

統(tǒng)計(jì)訪問(wèn)量最高的 URL:

grep "GET" access.log | cut -d'"' -f2 | cut -d' ' -f2 | sort | uniq -c | sort -nr

示例輸出:

5 /index.html
3 /about.html
2 /contact.html

實(shí)用場(chǎng)景:

  • 提取網(wǎng)站訪問(wèn)的 URL
  • 統(tǒng)計(jì)訪問(wèn)次數(shù),分析熱門頁(yè)面

簡(jiǎn)潔高效,適用于日志分析!

11. 結(jié)合 grep 和 find,搜索指定類型的文件

在 /path 目錄遞歸查找所有 .log 文件,并在這些文件中搜索 "關(guān)鍵詞",輸出匹配的行。

find /path -type f -name "*.log" -exec grep "關(guān)鍵詞" {} +

逐步拆解

部分

作用

find /path

在 /path 目錄及所有子目錄中查找文件

-type f

只查找普通文件(排除目錄等其他類型)

-name "*.log"

只匹配 .log 結(jié)尾的文件(即日志文件)

-exec

對(duì)查找到的文件執(zhí)行后續(xù)命令

grep "關(guān)鍵詞" {}

在每個(gè)找到的日志文件中搜索 "關(guān)鍵詞"

{}

代表 find 查找到的文件名,會(huì)被 grep 替換

+

批量執(zhí)行grep,提高效率(不同于 \;,它會(huì)逐個(gè)執(zhí)行)

例子 1:查找 /var/log/目錄下所有 *.log 文件中包含 ERROR 的行

find /var/log -type f -name "*.log" -exec grep "ERROR" {} +

 實(shí)際作用:

  • 先在 /var/log 目錄下查找所有 .log 文件
  • 然后在這些 .log 文件中搜索 "ERROR"
  • 輸出包含 "ERROR" 的 行 + 文件名

示例輸出:

/var/log/system.log:Feb 1 12:30:22 server kernel: ERROR: Disk failure detected

-exec 中 + 和 \; 的區(qū)別

① +(推薦)—— 批量執(zhí)行,提高效率:

find /var/log -type f -name "*.log" -exec grep "ERROR" {} +

find會(huì)盡可能把多個(gè)文件傳遞給 grep,減少命令執(zhí)行次數(shù),提高效率。

等效于:

grep "ERROR" file1.log file2.log file3.log

② \; —— 每個(gè)文件執(zhí)行一次,效率低

find /var/log -type f -name "*.log" -exec grep "ERROR" {} \;

find會(huì)對(duì)每個(gè)*.log文件單獨(dú)執(zhí)行g(shù)rep,效率低下。

等效于:

grep "ERROR" file1.log
grep "ERROR" file2.log
grep "ERROR" file3.log

推薦使用 +,避免對(duì)大量文件執(zhí)行 grep 時(shí)的性能問(wèn)題!

例子 2:查找 *.log 文件中包含"ERROR",但排除 backup.log

find /var/log -type f -name "*.log" ! -name "backup.log" -exec grep "ERROR" {} +

作用:! -name "backup.log" 讓 find排除backup.log,防止誤搜

例子 3:統(tǒng)計(jì) *.log 文件中"ERROR" 關(guān)鍵詞出現(xiàn)的次數(shù)

find /var/log -type f -name "*.log" -exec grep -c "ERROR" {} +

示例輸出:

/var/log/nginx/access.log: 15
/var/log/system.log: 3

grep -c 統(tǒng)計(jì) "ERROR" 出現(xiàn)的次數(shù),適用于日志分析。

12. 結(jié)合 grep 和 head,只顯示最前面的匹配結(jié)果

在日志文件中查找 "error",只顯示最早的 5 行:

grep -i "error" /var/log/syslog | head -5

解釋:

  • grep -i "error"找出所有包含 "error" 的行。
  • head -5 只顯示前 5 行,避免輸出太多內(nèi)容。

適用場(chǎng)景:只想看看 最早發(fā)生的錯(cuò)誤,不關(guān)心后面的記錄。

13. 結(jié)合 grep 和 diff,對(duì)比兩個(gè)文件的不同之處

對(duì)比 file1.log 和 file2.log,只顯示不同的行:

grep -v -f file1.log file2.log

解釋:

  • -f file1.log將 file1.log 里的內(nèi)容作為匹配模板。
  • grep -v排除所有在 file1.log 里已經(jīng)存在的行,最終顯示 file2.log 里有但 file1.log 里沒(méi)有的內(nèi)容。

適用場(chǎng)景:比較兩個(gè)日志文件的不同,找出新增的錯(cuò)誤或信息。

14. 結(jié)合 grep 和 wc,統(tǒng)計(jì)不同關(guān)鍵詞的出現(xiàn)次數(shù)

統(tǒng)計(jì)日志中 "error"、"warning"、"failed" 出現(xiàn)的次數(shù)

grep -E "error|warning|failed" /var/log/syslog | wc -l

解釋:

  • grep -E "error|warning|failed"匹配多個(gè)關(guān)鍵詞(支持正則表達(dá)式)。
  • wc -l統(tǒng)計(jì)匹配到的行數(shù),讓你知道這些關(guān)鍵詞在日志里出現(xiàn)了多少次。

適用場(chǎng)景:統(tǒng)計(jì)關(guān)鍵日志事件的發(fā)生頻率,判斷是否有嚴(yán)重問(wèn)題。

15. 結(jié)合 grep 和 tee,同時(shí)輸出匹配結(jié)果到終端和文件

查找日志中的 "error",并保存到 error.log:

grep -i "error" /var/log/syslog | tee error.log

解釋:

  • grep -i "error"查找所有錯(cuò)誤信息。
  • tee error.log把結(jié)果同時(shí)輸出到終端和 error.log 文件,方便后續(xù)分析。

適用場(chǎng)景:需要 實(shí)時(shí)查看匹配結(jié)果,同時(shí)保存到文件 以備后續(xù)分析。

16. grep + sort | uniq:統(tǒng)計(jì)匹配內(nèi)容

統(tǒng)計(jì) server.log 中出現(xiàn)的所有錯(cuò)誤類型:

grep "ERROR" server.log | awk '{print $2}' | sort | uniq -c

解釋:

  • grep "ERROR" server.log 先找出所有包含 "ERROR" 的行
  • awk '{print $2}' 提取 第二列(假設(shè)錯(cuò)誤類型在第二列)
  • sort 排序
  • uniq -c 統(tǒng)計(jì)每種錯(cuò)誤類型出現(xiàn)的次數(shù)

實(shí)用場(chǎng)景:統(tǒng)計(jì)日志中各種錯(cuò)誤的發(fā)生頻率,快速定位高頻錯(cuò)誤。

17. 結(jié)合 sed,批量替換文本

批量替換日志中的 "error" 為 "ERROR"

grep -l "error" *.log | xargs sed -i 's/error/ERROR/g'

解釋:

  • grep -l "error" *.log : 找到所有包含 "error" 的日志文件。
  • xargs sed -i 's/error/ERROR/g' : 逐個(gè)修改這些文件,將 "error" 變成 "ERROR"。

適用場(chǎng)景:批量修改 文件中的內(nèi)容,避免手動(dòng)修改多個(gè)文件。

18. 結(jié)合 awk,提取關(guān)鍵信息

從 access.log 里提取訪問(wèn) IP

grep "200" access.log | awk '{print $1}' | sort | uniq -c | sort -nr

解釋:

  • grep "200" : 篩選返回狀態(tài)碼 200(成功訪問(wèn)) 的日志。
  • awk '{print $1}' : 提取日志中的第 1 列(通常是 IP 地址)。
  • sort | uniq -c : 統(tǒng)計(jì)每個(gè) IP 訪問(wèn)次數(shù)。
  • sort -nr : 按訪問(wèn)次數(shù)從高到低排序。

適用場(chǎng)景:

  • 分析 網(wǎng)站訪問(wèn)來(lái)源,識(shí)別熱門 IP。
  • 識(shí)別惡意爬蟲(chóng),發(fā)現(xiàn)異常高頻 IP。

19. grep + ps:查找正在運(yùn)行的進(jìn)程

檢查系統(tǒng)中是否有 nginx 進(jìn)程運(yùn)行

ps aux | grep "nginx"

解釋:

  • ps aux 列出所有運(yùn)行的進(jìn)程
  • grep "nginx" 過(guò)濾出包含 "nginx" 的進(jìn)程

更精確的用法(排除 grep 自己):

ps aux | grep nginx | grep -v grep
或
ps aux | grep "[n]ginx"

這里的 [n]ginx 是一個(gè)小技巧,避免 grep 命令本身出現(xiàn)在結(jié)果中。

20. grep + netstat / ss:查看端口占用

查找正在使用 8080 端口的進(jìn)程

netstat -tulnp | grep "8080"

解釋:

  • netstat -tulnp 顯示所有監(jiān)聽(tīng)的端口
  • grep "8080" 過(guò)濾出使用 8080 端口的進(jìn)程

如果 netstat 不可用,可以用 ss 代替:

ss -tulnp | grep "8080"

實(shí)用場(chǎng)景:排查端口占用問(wèn)題,確認(rèn)某個(gè)端口是否被某個(gè)進(jìn)程占用。

四、總結(jié):學(xué)會(huì) grep,你的查找效率起飛!

grep 是一個(gè)超級(jí)實(shí)用的工具,掌握以下幾個(gè)最常用的參數(shù),你的查找效率絕對(duì)提升 10 倍。

常用語(yǔ)法:

  • grep "關(guān)鍵詞" 文件 —— 查找文件中的內(nèi)容
  • grep -i "關(guān)鍵詞" 文件 —— 忽略大小寫(xiě)
  • grep -r "關(guān)鍵詞" 目錄 —— 遞歸查找文件夾中的內(nèi)容
  •  grep -n "關(guān)鍵詞" 文件 —— 顯示匹配的行號(hào)
  • grep -v "關(guān)鍵詞" 文件 —— 反向查找,不包含關(guān)鍵詞的行
  • grep -C 3 "關(guān)鍵詞" 文件 —— 顯示前后 3 行內(nèi)容
  • grep --color "關(guān)鍵詞" 文件 —— 高亮顯示匹配的內(nèi)容

進(jìn)階用法:組合 grep 選項(xiàng),讓查找更高效!

  • grep -rn "關(guān)鍵詞" . —— 遞歸查找文件,并顯示行號(hào)
  • grep -ri "關(guān)鍵詞" . —— 遞歸查找,并忽略大小寫(xiě)
  • grep -rl "關(guān)鍵詞" . —— 遞歸查找,只顯示匹配的文件名
  • grep -A 3 "關(guān)鍵詞" 文件 —— 顯示匹配行及 后 3 行
  • grep -B 5 "關(guān)鍵詞" 文件 —— 顯示匹配行及 前 5 行
  • grep -C 2 "關(guān)鍵詞" 文件 —— 顯示匹配行的 前后 2 行
  • grep -c "關(guān)鍵詞" 文件 —— 統(tǒng)計(jì) 匹配行的數(shù)量
  • grep -o "關(guān)鍵詞" 文件 —— 只顯示匹配的 關(guān)鍵詞,不輸出整行
  • grep -m 5 "關(guān)鍵詞" 文件 —— 限制 輸出最多 5 行匹配內(nèi)容
  • grep -w "關(guān)鍵詞" 文件 —— 精確匹配完整單詞,不匹配部分字符
  • grep -F "關(guān)鍵詞" 文件 —— 純文本匹配,不使用正則表達(dá)式
  • grep "關(guān)鍵詞" 文件 | grep "其他關(guān)鍵詞" —— 多次過(guò)濾,篩選更精準(zhǔn)
  • grep "關(guān)鍵詞" 文件 | sort | uniq -c | sort -nr —— 統(tǒng)計(jì)關(guān)鍵詞出現(xiàn)次數(shù)
  • grep -r "關(guān)鍵詞" /path | xargs grep "其他關(guān)鍵詞" —— 批量搜索多個(gè)關(guān)鍵詞
  • grep "關(guān)鍵詞" 文件 | tee output.log —— 同時(shí)輸出到終端和文件
  • grep "關(guān)鍵詞" 文件 | cut -d' ' -f2 —— 提取特定字段(如 URL)
  • find /path -type f -name "*.log" -exec grep "關(guān)鍵詞" {} + —— 按文件類型搜索
  • ps aux | grep "nginx" —— 查找 正在運(yùn)行的進(jìn)程
  • netstat -tulnp | grep "8080" —— 查找 被占用的端口
  • tail -f 文件 | grep "關(guān)鍵詞" —— 實(shí)時(shí)監(jiān)控日志,過(guò)濾關(guān)鍵內(nèi)容
  • diff <(grep "關(guān)鍵詞" 文件1) <(grep "關(guān)鍵詞" 文件2) —— 對(duì)比兩個(gè)文件的匹配差異

下一步,掌握 sed 和 awk,玩轉(zhuǎn)文本處理!

grep 適合查找文本,而在 Linux 世界里,修改和格式化文本 還需要兩個(gè)更強(qiáng)大的工具:sed 和 awk。

  • sed:強(qiáng)大的 文本編輯器,可以 批量替換、刪除、修改 內(nèi)容。
  • awk:強(qiáng)大的 文本處理工具,適用于 數(shù)據(jù)提取、格式化、統(tǒng)計(jì)。
責(zé)任編輯:趙寧寧 來(lái)源: 跟著小康學(xué)編程
相關(guān)推薦

2016-07-25 13:26:40

大型機(jī)大機(jī)IBM

2013-08-16 11:26:56

2023-02-09 08:57:11

Callable異步java

2020-09-28 12:34:38

Python代碼開(kāi)發(fā)

2022-07-18 09:56:16

AI推薦搜索

2022-07-20 10:09:15

AIAISummit智能搜索

2021-08-27 14:50:57

渲染UIC++ImGui

2009-08-31 08:42:31

Windows 7微軟因特爾合作

2012-12-17 11:40:10

戴爾

2022-10-21 15:02:36

DeepFake技術(shù)

2022-04-28 21:53:52

TypeScriptany類型

2019-04-04 17:15:13

2024-04-24 14:43:40

Linux命令

2009-12-25 13:44:00

grep命令

2024-12-27 09:29:09

2020-05-11 23:18:09

內(nèi)存條CPU插槽

2025-02-10 08:10:00

Linuxsed命令

2019-01-15 08:50:41

泄露人臉數(shù)據(jù)

2021-03-29 10:10:15

Linuxgrep
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)