Linux 常用命令 grep
大家好,我是云炬學(xué)長(zhǎng)?;谀壳昂芏嗥髽I(yè)都在使用 Linux 操作系統(tǒng),掌握 Linux 命令行已經(jīng)成為運(yùn)維人必備的基礎(chǔ)知識(shí)和技能,學(xué)習(xí)命令是為了更好地解決問(wèn)題。
上一篇分享了運(yùn)維中遇到的問(wèn)題及解決辦法,這次分享 Linux 的常用基礎(chǔ)命令 grep 。
grep 查找文件中符合條件的字符串,與 sed、awk 組成 Linux 的三劍客,語(yǔ)法格式:grep [選項(xiàng)] 關(guān)鍵字 文件名
關(guān)鍵字加引號(hào)(單引號(hào),雙引號(hào)),不加引號(hào)的區(qū)別
關(guān)鍵字加引號(hào),關(guān)鍵字會(huì)被看成一個(gè)整體,可以包含空格或特殊字符 1)單引號(hào) 如果關(guān)鍵字包含特殊字符($ 和 \' 除外),使用單引號(hào)會(huì)對(duì)特殊字符轉(zhuǎn)義,進(jìn)行完全匹配搜索 2)雙引號(hào) 關(guān)鍵字即使包含特殊符號(hào),使用雙引號(hào)原樣輸出 3)不加引號(hào) 搜索包含關(guān)鍵字中任意單詞的文本行
一、打印包含關(guān)鍵字的行
語(yǔ)法格式:grep "關(guān)鍵字" 文件名
查找包含關(guān)鍵字 root ?的行,并顯示出來(lái)

編輯切換為居中
二、打印以某關(guān)鍵字開(kāi)頭的行
語(yǔ)法格式:grep ?"^關(guān)鍵字" ?文件名
在關(guān)鍵字前面加 ^ 號(hào),表示搜索以關(guān)鍵字開(kāi)頭的行

編輯切換為居中
三、打印某關(guān)鍵字結(jié)尾的行
語(yǔ)法格式:grep ?"關(guān)鍵字$" 文件名
在關(guān)鍵字后面加上 $ 符號(hào),表示查找以關(guān)鍵字結(jié)尾的行

編輯切換為居中
四、不區(qū)分大小寫(xiě)打印關(guān)鍵字的行
語(yǔ)法格式:grep -i ?"關(guān)鍵字" ?文件名
打印包含 root 的行,可以是 Root ,ROOT 等等

編輯切換為居中
五、打印關(guān)鍵字并顯示行號(hào)
語(yǔ)法格式:grep -n ?"關(guān)鍵字" ?文件名
在文件 test.txt 中查找關(guān)鍵字的同時(shí),并且顯示行號(hào)

編輯切換為居中
六、遞歸搜索關(guān)鍵字
語(yǔ)法格式:grep -r ?關(guān)鍵字
搜索所有的文件及子目錄,包含關(guān)鍵字的行
grep -r ?"root" ?/home/back
編輯切換為居中
七、統(tǒng)計(jì)匹配某關(guān)鍵字的次數(shù)
語(yǔ)法格式:grep -c ?"關(guān)鍵字" 文件名
統(tǒng)計(jì)包含 root 的行數(shù)

編輯切換為居中
八、過(guò)濾空白行
固定的語(yǔ)法格式: grep -v "^$" 文件名
先輸出所有內(nèi)容,然后鍵入命令對(duì)比后,更好展示

編輯切換為居中
九、查找包含多個(gè)關(guān)鍵字的行
語(yǔ)法格式:grep -E "關(guān)鍵字1|關(guān)鍵字2" ?文件名
查找包含 root 或者 sync 的行
grep -E ?"root|sync" test.txt

編輯切換為居中
這里使用了 Linux 正則表達(dá)式,Linux 正則表達(dá)式常用元字符如下

編輯切換為居中