相信很多系統維運人員都會處理到臨時要調整系統資訊,但是因為一台主機上有很多個設定檔案與程式碼,怕一不小心漏改到造成系統錯誤,這時候可以使用grep這個指令來輔助搜尋,在Linux中提供不少方便的grep函式供系統管理人員使用,但由於內建函式眾多,我只提供日常比較常用的函式供你參考,我也順便紀錄下來當作備忘錄,也希望藉由此次分享讓初學者能更快掌握相關語法。
Table of Contents
測試資料
檔案名稱可以用furnituredb.txt,使用vim furnituredb.txt建立並將以下資料貼入即可開始測試
ID / Name / SN
F001 咖啡桌 6QY852V793UB
F002 餐桌 NA7L27342OZB
F003 邊桌 680H92L6Q0TM
F004 茶几 Q3CWQQ80JBHH
F005 木頭餐桌 3M3VEFHK744N
F006 柚木餐桌 UI3GK6PR3Y36
grep基本用法:
1.搜尋特定檔案內的關鍵字
grep “關鍵字” 檔案名稱
# 基本搜索: 使用 grep 来搜索包含指定文本的行。
[email protected]:/home/ubuntu# grep "桌" furnituredb.txt
F001 咖啡桌 6QY852V793UB
F002 餐桌 NA7L27342OZB
F003 邊桌 680H92L6Q0TM
F005 木頭餐桌 3M3VEFHK744N
F006 柚木餐桌 UI3GK6PR3Y36
0001 長桌 6M3VEFHK788N
2.搜尋特定目錄下所有檔案,包含關鍵字的檔案找出來
grep -r “關鍵字” 目錄名稱
#使用 -r 選項可以針對資料夾內的文字檔案做遞迴搜索,找出包含指定關鍵字的檔案。
[email protected]:/home/ubuntu# grep -r "桌" /home/ubuntu/
/home/ubuntu/furnituredb.txt:F001 咖啡桌 6QY852V793UB
/home/ubuntu/furnituredb.txt:F002 餐桌 NA7L27342OZB
/home/ubuntu/furnituredb.txt:F003 邊桌 680H92L6Q0TM
/home/ubuntu/furnituredb.txt:F005 木頭餐桌 3M3VEFHK744N
/home/ubuntu/furnituredb.txt:F006 柚木餐桌 UI3GK6PR3Y36
3.搜尋特定檔案內的關鍵字並且忽略大小寫
grep -i “關鍵字” 檔案名稱
# 使用 -i 選項可以忽略搜索時的大小寫差異
[email protected]:/home/ubuntu# grep -r "桌" /home/ubuntu/
/home/ubuntu/furnituredb.txt:F001 咖啡桌 6QY852V793UB
/home/ubuntu/furnituredb.txt:F002 餐桌 NA7L27342OZB
/home/ubuntu/furnituredb.txt:F003 邊桌 680H92L6Q0TM
/home/ubuntu/furnituredb.txt:F005 木頭餐桌 3M3VEFHK744N
/home/ubuntu/furnituredb.txt:F006 柚木餐桌 UI3GK6PR3Y36
4.使用正則運算式搜尋
grep -E “正則運算式” 檔案名稱
# 使用 -E or -P 選項可以啟用正則運算式搜索
[email protected]:/home/ubuntu# grep -E "^[0-9]" furnituredb.txt
0001 長桌 6M3VEFHK788N
5.使用反向搜尋
grep -v “不想被搜尋出來的關鍵字” 檔案名稱
# 使用 -v 選項可以找出不想被搜尋出來的關鍵字之外的紀錄
[email protected]:/home/ubuntu# grep -v "邊桌" furnituredb.txt
ID / Name / SN
F001 咖啡桌 6QY852V793UB
F002 餐桌 NA7L27342OZB
F004 茶几 Q3CWQQ80JBHH
F005 木頭餐桌 3M3VEFHK744N
F006 柚木餐桌 UI3GK6PR3Y36
0001 長桌 6M3VEFHK788N
6.顯示行號
grep -n “關鍵字” 檔案名稱
# 使用 -n 選項可以找出被搜尋出來的關鍵字並顯示行號
[email protected]:/home/ubuntu# grep -n "邊桌" furnituredb.txt
4:F003 邊桌 680H92L6Q0TM
7.ls顯示特定關鍵字的檔案
ls -l | grep 關鍵字
# 使用 -l | grep 關鍵字 選項可以找出被搜尋出來的關鍵字並顯示行號
[email protected]:/home/ubuntu# ls -l | grep furnituredb
-rw-r--r-- 1 root root 205 Sep 18 03:13 furnituredb.txt
常用的正則運算式範例
.:匹配任何單個字元
grep “a.ple”:搜尋如 “apple”、”ample”
[abc]:匹配字元集中的任何一個字元
grep “[aeiou]”:搜尋包含任何母音字母的行。
[a-z]:匹配從 ‘a’ 到 ‘z’ 之間的任何字元
grep “[0-9]”:搜尋包含數字的資料行。
[^abc]:匹配不在字元集中的任何字元
grep “[^0-9]”:搜尋不包含數字的資料行
*:匹配前一個字元的零個或多個重複
+:匹配前一個字元的一個或多個重複
grep “ap*le”:搜尋如 “ale”、”apple”、”appple” 等的資料行
{n}:匹配前一個字元的精確重複 n 次
{n,}:匹配前一個字元至少重複 n 次
{n,m}:匹配前一個字元重複 n 到 m 次
grep “ap{2}le”:搜尋如 “apple” 之類的行,但不匹配 “ale”
^:匹配行的開頭
$:匹配行的末尾
grep “^apple”:搜尋以 “apple” 開頭的資料行
grep “apple$”:搜尋以 “apple” 結尾的資料行
\b:匹配單詞邊界
grep “\bword\b”:搜尋包含獨立單字 “word” 的資料行
Reference
- ubuntu官方網站:官方連結
你好,我是RD爸,希望透過我的紀錄,可以帶給你一些新的想法~ 專注於各式3C產品的開箱評測、程式相關技術及理財筆記。
email ►[email protected]