本篇 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