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