主頁 > 知識(shí)庫 > 深入理解Linux中的grep命令

深入理解Linux中的grep命令

熱門標(biāo)簽:天津電話外呼系統(tǒng)排名 商機(jī)地圖標(biāo)注 測繪地圖標(biāo)注名稱 怎么在百度地圖標(biāo)注公司的位置 智能電銷機(jī)器人有用嗎 德陽400電話申請 外呼電話系統(tǒng)怎么操作 百度地圖標(biāo)注直線距離 鶴崗400電話申請

介紹

Linux系統(tǒng)中g(shù)rep命令是一種強(qiáng)大的文本搜索工具,它能使用正則表達(dá)式搜索文本,并把匹 配的行打印出來。grep全稱是Global Regular Expression Print,表示全局正則表達(dá)式版本,它的使用權(quán)限是所有用戶。

grep [-acinv] [--color=auto] '查找字符串' filename 

參數(shù):

    -a :將binary文件以text文件的方式查找數(shù)據(jù)

    -c :計(jì)算找到‘查找字符串'的次數(shù)

    -i :忽略大小寫的區(qū)別,即把大小寫視為相同

    -n :順便輸出行號(hào)

    -v :反向選擇,即顯示出沒有‘查找字符串'內(nèi)容的那一行

    -l :只顯示匹配的文件,不顯示具體內(nèi)容

    -f規(guī)則文件> : 指定規(guī)則文件,其內(nèi)容含有一個(gè)或多個(gè)規(guī)則樣式,讓grep查找符合規(guī)則條件的文件內(nèi)容,格式為每行一個(gè)規(guī)則樣式。  

實(shí)例:

#取出文件/etc/man.config中包含MANPATH關(guān)鍵詞的行,并把找到的關(guān)鍵字加上顏色
grep --color=auto MANPATH /etc/man.config

#把ls -l的輸出中包含字母file(不區(qū)分大小寫)的內(nèi)容輸出
ls -l | grep -i file

#在文件 '/var/log/messages'中查找關(guān)鍵詞"Aug" 
grep Aug /var/log/messages 

#在文件 '/var/log/messages'中查找以"Aug"開始的行
grep ^Aug /var/log/messages 

#選擇 '/var/log/messages' 文件中所有包含數(shù)字的行 
grep [0-9] /var/log/messages 

#在目錄 '/var/log' 及隨后的目錄中搜索字符串"Aug" (遞歸查找)
grep Aug -R /var/log/* 

#在當(dāng)前目錄搜索帶'energywise'行的文件
grep 'energywise' *      

#在當(dāng)前目錄及其子目錄下搜索'energywise'行的文件
grep -r 'energywise' *  

#查找指定進(jìn)程
ps -ef|grep svn

#從文件中讀取關(guān)鍵詞進(jìn)行搜索,輸出test.txt文件中含有從test2.txt文件中讀取出的關(guān)鍵詞的內(nèi)容行
cat test.txt | grep -f test2.txt

grep與正規(guī)表達(dá)式:

字符類的搜索:如果我想要搜尋 test 或 taste 這兩個(gè)單字時(shí),可以發(fā)現(xiàn)到,其實(shí)她們有共通的 ‘t?st' 存在~這個(gè)時(shí)候,我可以這樣來搜尋:

grep -n 't[ae]st' regular_express.txt

其實(shí) [] 里面不論有幾個(gè)字節(jié),他都謹(jǐn)代表某『一個(gè)』字節(jié), 所以,上面的例子說明了,我需要的字串是『tast』或『test』兩個(gè)字串而已!

字符類的反向選擇 [^] :如果想要搜索到有 oo 的行,但不想要 oo 前面有 g,如下

grep -n '[^g]oo' regular_express.txt

字符類的連續(xù):再來,假設(shè)我 oo 前面不想要有小寫字節(jié),

grep -n '[^a-z]oo' regular_express.txt

當(dāng)我們在一組集合字節(jié)中,如果該字節(jié)組是連續(xù)的,例如大寫英文/小寫英文/數(shù)字等等, 就可以使用[a-z],[A-Z],[0-9]等方式來書寫,那么如果我們的要求字串是數(shù)字與英文呢? 呵呵!就將他全部寫在一起,變成:[a-zA-Z0-9]。

我們要取得有數(shù)字的那一行,就這樣:

grep -n '[0-9]' regular_express.txt

行首與行尾字節(jié) ^ $

行首字符:如果我想要讓 the 只在行首列出呢? 這個(gè)時(shí)候就得要使用定位字節(jié)了!我們可以這樣做:

grep -n '^the' regular_express.txt

開頭是小寫字節(jié)的那一行就列出呢?可以這樣:

grep -n '^[a-z]' regular_express.txt

我不想要開頭是英文字母,則可以是這樣:

grep -n '^[^a-zA-Z]' regular_express.txt

^ 符號(hào),在字符類符號(hào)(括號(hào)[])之內(nèi)與之外是不同的! 在 [] 內(nèi)代表『反向選擇』,在 [] 之外則代表定位在行首的意義!

行尾結(jié)束為小數(shù)點(diǎn) (.) 的那一行:

grep -n '\.$' regular_express.txt

特別注意到,因?yàn)樾?shù)點(diǎn)具有其他意義(底下會(huì)介紹),所以必須要使用轉(zhuǎn)義字符()來加以解除其特殊意義!

#找出空白行
grep -n '^$' regular_express.txt

任意一個(gè)字節(jié) . 與重復(fù)字節(jié) *

    . (小數(shù)點(diǎn)):代表『一定有一個(gè)任意字節(jié)』的意思;

    * (星號(hào)):代表『重復(fù)前一個(gè)字符, 0 到無窮多次』的意思,為組合形態(tài)

#需要找出 g??d 的字串,亦即共有四個(gè)字節(jié), 起頭是 g 而結(jié)束是 d ,我可以這樣做:
grep -n 'g..d' regular_express.txt

#查找至少兩個(gè) o 以上的字串,『o*』代表的是:『擁有空字節(jié)或一個(gè) o 以上的字節(jié)』
grep -n 'ooo*' regular_express.txt

#想要字串開頭與結(jié)尾都是 g,但是兩個(gè) g 之間僅能存在至少一個(gè) o ,亦即是 gog, goog, gooog.... 等等
grep -n 'goo*g' regular_express.txt

#找出 g 開頭與 g 結(jié)尾的行,當(dāng)中的字符可有可無
grep -n 'g.*g' regular_express.txt

#找到兩個(gè) o 的字串,可以是:
grep -n 'o\{2\}' regular_express.txt

#找出 g 后面接 2 到 5 個(gè) o ,然后再接一個(gè) g 的字串,他會(huì)是這樣:
grep -n 'go\{2,5\}g' regular_express.txt

#2 個(gè) o 以上的 goooo....g 呢?除了可以是 goo*g ,也可以
grep -n 'go\{2,\}g' regular_express.txt

#從多個(gè)文件中查找關(guān)鍵詞
grep 'linux' test.txt test2.txt 

總結(jié)

以上就是關(guān)于Linux中g(shù)rep命令的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

您可能感興趣的文章:
  • Linux中g(shù)rep和egrep命令詳解
  • linux中使用grep命令詳解
  • linux 中g(shù)rep 匹配制表符 和 換行符的命令
  • Linux 使用grep篩選多個(gè)條件及grep常用過濾命令
  • Linux中利用grep命令如何檢索文件內(nèi)容詳解
  • Linux下find和grep常用命令及區(qū)別介紹
  • linux文本過濾grep基礎(chǔ)命令介紹(5)
  • 詳解linux grep命令
  • Linux下的Grep命令使用方法詳細(xì)介紹
  • Linux常用命令之grep命令用法詳解

標(biāo)簽:優(yōu)質(zhì)小號(hào) 丹東 滁州 自貢 六盤水 武漢 鎮(zhèn)江 百色

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《深入理解Linux中的grep命令》,本文關(guān)鍵詞  深入,理解,Linux,中的,grep,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《深入理解Linux中的grep命令》相關(guān)的同類信息!
  • 本頁收集關(guān)于深入理解Linux中的grep命令的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章