麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > Linux Shell > 正文

深入理解Linux中的grep命令

2020-07-27 19:00:18
字體:
來源:轉載
供稿:網友

介紹

Linux系統中grep命令是一種強大的文本搜索工具,它能使用正則表達式搜索文本,并把匹 配的行打印出來。grep全稱是Global Regular Expression Print,表示全局正則表達式版本,它的使用權限是所有用戶。

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

參數:

    -a :將binary文件以text文件的方式查找數據

    -c :計算找到‘查找字符串'的次數

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

    -n :順便輸出行號

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

    -l :只顯示匹配的文件,不顯示具體內容

    -f<規則文件> : 指定規則文件,其內容含有一個或多個規則樣式,讓grep查找符合規則條件的文件內容,格式為每行一個規則樣式。  

實例:

#取出文件/etc/man.config中包含MANPATH關鍵詞的行,并把找到的關鍵字加上顏色grep --color=auto MANPATH /etc/man.config#把ls -l的輸出中包含字母file(不區分大小寫)的內容輸出ls -l | grep -i file#在文件 '/var/log/messages'中查找關鍵詞"Aug" grep Aug /var/log/messages #在文件 '/var/log/messages'中查找以"Aug"開始的行grep ^Aug /var/log/messages #選擇 '/var/log/messages' 文件中所有包含數字的行 grep [0-9] /var/log/messages #在目錄 '/var/log' 及隨后的目錄中搜索字符串"Aug" (遞歸查找)grep Aug -R /var/log/* #在當前目錄搜索帶'energywise'行的文件grep 'energywise' *      #在當前目錄及其子目錄下搜索'energywise'行的文件grep -r 'energywise' *  #查找指定進程ps -ef|grep svn#從文件中讀取關鍵詞進行搜索,輸出test.txt文件中含有從test2.txt文件中讀取出的關鍵詞的內容行cat test.txt | grep -f test2.txt

grep與正規表達式:

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

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

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

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

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

字符類的連續:再來,假設我 oo 前面不想要有小寫字節,

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

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

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

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

行首與行尾字節 ^ $

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

grep -n '^the' regular_express.txt

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

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

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

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

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

行尾結束為小數點 (.) 的那一行:

grep -n '/.$' regular_express.txt

特別注意到,因為小數點具有其他意義(底下會介紹),所以必須要使用轉義字符()來加以解除其特殊意義!

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

任意一個字節 . 與重復字節 *

    . (小數點):代表『一定有一個任意字節』的意思;

    * (星號):代表『重復前一個字符, 0 到無窮多次』的意思,為組合形態

#需要找出 g??d 的字串,亦即共有四個字節, 起頭是 g 而結束是 d ,我可以這樣做:grep -n 'g..d' regular_express.txt#查找至少兩個 o 以上的字串,『o*』代表的是:『擁有空字節或一個 o 以上的字節』grep -n 'ooo*' regular_express.txt#想要字串開頭與結尾都是 g,但是兩個 g 之間僅能存在至少一個 o ,亦即是 gog, goog, gooog.... 等等grep -n 'goo*g' regular_express.txt#找出 g 開頭與 g 結尾的行,當中的字符可有可無grep -n 'g.*g' regular_express.txt#找到兩個 o 的字串,可以是:grep -n 'o/{2/}' regular_express.txt#找出 g 后面接 2 到 5 個 o ,然后再接一個 g 的字串,他會是這樣:grep -n 'go/{2,5/}g' regular_express.txt#2 個 o 以上的 goooo....g 呢?除了可以是 goo*g ,也可以grep -n 'go/{2,/}g' regular_express.txt#從多個文件中查找關鍵詞grep 'linux' test.txt test2.txt 

總結

以上就是關于Linux中grep命令的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 一级做a爱片性色毛片高清 日本一区二区在线看 | 欧美一级精品 | 欧美激情性色生活片在线观看 | 91精品片 | 久久91亚洲精品久久91综合 | 国产91小视频在线观看 | 特级黄色小说 | 欧美日韩在线播放一区 | 中文字幕在线观看视频一区 | 欧美激情第一区 | 亚洲欧美国产高清 | 欧美片a| 99精品视频免费看 | 99麻豆久久久国产精品免费 | 黄色免费在线视频网站 | 在线中文字幕不卡 | 日韩在线播放中文字幕 | 免费黄色在线观看网站 | 特一级黄色毛片 | 91嫩草丨国产丨精品入口 | 高清成人在线 | 日本最新免费二区三区 | 免费毛片在线 | 看全色黄大色黄大片女图片 | 1级片在线观看 | 亚洲午夜久久久久 | 久久男人天堂 | 在线观看国产免费视频 | 国产一级毛片高清 | 色欲香天天天综合网站 | chinesehd天美原创xxxx | 无遮挡一级毛片视频 | av免费大全 | 国产资源在线免费观看 | 极品销魂一区二区三区 | 爽爽视频免费看 | av免费在线播放网址 | 欧美日韩免费在线观看视频 | 一道本不卡一区 | 蜜桃网在线 | 欧美a∨一区二区三区久久黄 |