- 工信部備案號 滇ICP備05000110號-1
- 滇公安備案 滇53010302000111
- 增值電信業務經營許可證 B1.B2-20181647、滇B1.B2-20190004
- 云南互聯網協會理事單位
- 安全聯盟認證網站身份V標記
- 域名注冊服務機構許可:滇D3-20230001
- 代理域名注冊服務機構:新網數碼
一、grep介紹
全拼:Global search REgular expression and Print out the line.
作用:文本搜索工具,根據用戶指定的“模式(過濾條件)”對目標文本逐行進行匹配檢查,打印匹配到的行.
模式:由正則表達式的元字符及文本字符所編寫出的過濾條件﹔
語法:
grep [options] [pattern] file
命令 參數 匹配模式 文件數據
grep命令里的匹配模式就是你想要找的東西,可以是普通的文字符號,也可以是正則表達式
常見參數:
-i: ignorecase,忽略字符的大小寫
-v: 顯示不能被模式匹配到的行
-E: 支持使用擴展的正則表達式元字符(egrep)
-n:顯示匹配行的行號
-r:遞歸查找子目錄中的文件
-l:只打印匹配的文件名
-c:只打印匹配的行數
-H: 在顯示符合樣式的那一行之前,表示該行所屬的文件名稱
-s:無聲操作只顯示報錯,檢查退出狀態
-e:使用正則表達式
-w:精確匹配
-wc:精確匹配次數
-o:查詢所有匹配字段
-A3:打印匹配行和下三行
-B3:打印匹配行和上三行
-C3:打印匹配行和上下三行
二、grep實踐
先看一下這個測試文件的內容吧
2.1、輸出以r開頭的行(不區分大小寫)
注: 這里的-i代表不區分大小寫, -n代表顯示匹配行和行號
2.2、輸出以.結尾的行
注: 因為.在這里有著特殊含義, 所以要用\轉義一下, 如果不加轉義字符的話, grep就會把它當做正則表達式來處理(.代表的含義是匹配任意一個字符)
2.3、$符號
在Linux系統中, 所有文件的結尾都有一個$符
可以利用cat -A 查看文件
2.4、^$(代表空行的意思)組合符
找出文件的空行, 以及行號
2.5、.點符號
"."點表示任意一個字符, 有且只有一個, 不包含空行
2.6、*符號
"*"表示找出前一個字符0次或一次以上
找出文件中r出現0次或多次的行和行號
2.7、.*組合符
".*"表示所有內容, 包括空行
2.8、^.*t符 (含義: 以任意內容開頭, 直到t結束)
2.9、[abc]中括號
中括號表達式,[abc]表示匹配中括號中任意一個字符, a或b或c,常見的形式如下;
[a-z]匹配所有小寫單個字母[A-Z]匹配所有單個大寫字母
[a-zA-Z]匹配所有的單個大小寫字母
[0-9]匹配所有單個數字
[a-zA-ZO-9]匹配所有數字和字母
匹配rt字符中的任意一個,得到它的行數和行號
2.10、[^abc]中括號中去反
[^abc]或[^a-c]這樣的命令, "^"符號在中括號中第一位表示排除, 就是排除字符a,b,c
注: 出現再中括號里的尖角號表示取反
三、擴展正則grep實踐
使用grep -E進行實踐擴展正則, egrep官網已經棄用了
3.1、+號
+號表示匹配前一個字符1一次或多次,必須使用grep-E擴展正則
3.2、?符
匹配前一個字符0次或1次
找出文件中包含rt或者rot的行
3.3、|符
豎線|再正則中是或者的意思
找出端口號為80的進程名
3.4、()小括號
將一個或多個字符捆綁在一起, 當作一個整體進行處理
3.5、{n,m}匹配次數
{n,m}:匹配前一個字符至少n次, 最多m次
{n,}: 匹配前一個字符至少n次, 沒有上限
{,m}: 匹配前一個字符最多m次,可以沒有
重復前一個字符各種次數, 可以通過-o參數顯示明確的匹配過程
售前咨詢
售后咨詢
備案咨詢
二維碼
TOP