Linux grep 搜尋字串用法與範例

本篇 ShengYu 介紹 Linux grep 搜尋字串用法與範例,grep 通常用來搭配其它指令來搜尋字串,例如 grep 搭配 cat 來搜尋檔案裡的特定字串,grep 算是 Linux 必學指令,學會這招讓工作更快速輕鬆。

以下的 Linux grep 用法與範例將分為這幾部分,

  • 將 cat 的輸出導向 grep 搜尋字串
  • 使用 grep 指令排除一個字串或多個字串
  • grep 忽略大小寫
  • grep 搜尋子資料夾
  • grep 顯示彩色輸出
  • grep 顯示行數
  • grep 顯示匹配結果的前後內容
  • grep 搜尋內容符合的檔案 pipe 給 sed 取代文字
  • grep 搭配正規表達式

那我們開始吧!

將 cat 的輸出導向 grep 搜尋字串

以下示範用 cat 將 nginx.log 檔案內容輸出並導向 grep 搜尋字串

1
cat nginx.log | grep "GET"

使用 grep 指令排除一個字串或多個字串

grep 排除字串的話要使用 -v 這個選項,例如在 nginx.log 檔案裡排除 GET 這個字串的結果

1
grep -v 'GET' nginx.log

grep 忽略大小寫

grep 忽略大小寫要使用 -i 這個選項,例如 Hello 跟 hello 都要能被找到的話就可以這樣寫,

1
grep -i "Hello" nginx.log

這樣不管是 Hello 或 hello 還是 HELLO 各種大小寫變化都能找得到。

grep 搜尋子資料夾

grep 要搜尋子資料夾可以加入 -r 遞迴這個選項跟一個 *,這樣就不會只搜尋當層資料夾,連子資料夾都會去搜尋,

1
grep -r "Hello" *

grep 顯示彩色輸出

grep 顯示彩色輸出要用 --color 這個參數

1
grep "http" log.txt --color

有顏色輸出能幫助你的眼球更快的找到目標文字。

grep 顯示行數

grep 顯示行數要用 -n 這個參數

1
grep -n "http" log.txt

如果要用 find 指令找檔案後將結果 pipe 給 grep 搜尋的話,用法範例如下,

1
find ./ -iname "*.txt" -type f | xargs grep -n "http"

grep 顯示匹配結果的前後內容

grep 顯示匹配結果的後5行內容,要用 -A 參數,after 的意思,

1
grep "http" log.txt -A 5

grep 顯示匹配結果的前5行內容,要用 -B 參數,before 的意思,

1
grep "http" log.txt -B 5

grep 搜尋內容符合的檔案 pipe 給 sed 取代文字

grep 搜尋內容符合的檔案 pipe 給 sed 取代文字的方式如下,範例內容是假設我要搜尋檔案內容有 http 的字串找出來後將這些檔案名稱 pipe 給 sed 取代文字,將這些檔案裡的 http 全部取代成 https,

1
2
3
4
# Linux
grep -ri "http" * -l | xargs sed -i 's/http/https/g'
# macOS
grep -ri "http" * -l | xargs sed -i "" 's/http/https/g'

grep 搭配正規表達式

grep 顯示 abc 開頭,

1
grep ^abc log.txt

grep 顯示 abc 結尾,

1
grep abc$ log.txt

grep 顯示數字,例如 abc0 ~ abc9 開頭,

1
grep abc[0-9] log.txt

其它相關文章推薦
Linux 常用指令教學懶人包
Linux grep/ack/ag 搜尋字串用法與範例
Linux ag 搜尋字串用法與範例(比 grep 還快)
Linux cut 字串處理用法與範例
Linux sed 字串取代用法與範例
Linux find 尋找檔案/尋找資料夾用法與範例
Linux kill 指令砍掉指定的 process name