grep的詳解與例項

2021-09-21 23:57:51 字數 3738 閱讀 6577

老樣子看看官方的解釋

功能說明:查詢檔案裡符合條件的字串。 

語  法:grep [-abcefghhillnqrsvvwxy][-a<

顯示列數

>

][-b

<

顯示列數

>

][-c

<

顯示列數

>

][-d

<

進行動作

>

][-e

<

範本樣式

>

][-f

<

範本檔案

>

][--help][範本樣式][檔案或目錄...] 

補充說明:grep指令用於查詢內容包含指定的範本樣式的檔案,如果發現某檔案的內容符合所指定的範本樣式,預設grep指令會把含有範本樣式的那一列顯示出來。若不指定任何檔名稱,或是所給予的檔名為「-」,則grep指令會從標準輸入裝置讀取資料。 

參  數: 

-a或--text   不要忽略二進位制的資料。 

-a<

顯示列數

>

或--after-context

=<

顯示列數

>

除了顯示符合範本樣式的那一列之外,並顯示該列之後的內容。 

-b或--byte-offset   在顯示符合範本樣式的那一列之前,標示出該列第乙個字元的位編號。 

-b<

顯示列數

>

或--before-context

=<

顯示列數

>

除了顯示符合範本樣式的那一列之外,並顯示該列之前的內容。 

-c或--count   計算符合範本樣式的列數。 

-c<

顯示列數

>

或--context

=<

顯示列數

>

或-<

顯示列數

>

除了顯示符合範本樣式的那一列之外,並顯示該列之前後的內容。 

-d<

進行動作

>

或--directories

=<

進行動作

>

當指定要查詢的是目錄而非檔案時,必須使用這項引數,否則grep指令將回報資訊並停止動作。 

-e<

範本樣式

>

或--regexp

=<

範本樣式

>

指定字串做為查詢檔案內容的範本樣式。 

-e或--extended-regexp   將範本樣式為延伸的普通表示法來使用。 

-f<

範本檔案

>

或--file

=<

範本檔案

>

指定範本檔案,其內容含有乙個或多個範本樣式,讓grep查詢符合範本條件的檔案內容,格式為每列乙個範本樣式。 

-f或--fixed-regexp   將範本樣式視為固定字串的列表。 

-g或--basic-regexp   將範本樣式視為普通的表示法來使用。 

-h或--no-filename   在顯示符合範本樣式的那一列之前,不標示該列所屬的檔名稱。 

-h或--with-filename   在顯示符合範本樣式的那一列之前,表示該列所屬的檔名稱。 

-i或--ignore-case   忽略字元大小寫的差別。 

-l或--file-with-matches   列出檔案內容符合指定的範本樣式的檔名稱。 

-l或--files-without-match   列出檔案內容不符合指定的範本樣式的檔名稱。 

-n或--line-number   在顯示符合範本樣式的那一列之前,標示出該列的列數編號。 

-q或--quiet或--silent   不顯示任何資訊。 

-r或--recursive   此引數的效果和指定「-d recurse」引數相同。 

-s或--no-messages   不顯示錯誤資訊。 

-v或--revert-match   反轉查詢。 

-v或--version   顯示版本資訊。 

-w或--word-regexp   只顯示全字符合的列。 

-x或--line-regexp   只顯示全列符合的列。 

-y   此引數的效果和指定「-i」引數相同。 

我的總結

例項grep 「jenny」 *.txt

grep 「sort it」 *

grep –c 「2004」 myfile//算出匹配的行數

grep –n 「2004」 myfile//算出匹配的行數並打出匹配的行

grep –i 「jul」 myfile

grep –v 「2004:22」 myfile//打出2004:22以外的內容的行,就是說打出來的內容不包括2004:22

grep 「2004:22:5[0-9]」 myfile

ls –l |grep 「2008-11-0[0-9]」

結果為:

drwxr-xr-x  9 user user     4096 2008-11-06 06:04 apache-tomcat-6.0.16 

-rwxr-xr-x  1 user user 11028480 2008-11-06 05:31 apache-tomcat-6.0.18.tar 

drwxr-xr-x 10 user user     4096 2008-11-06 05:35 jdk1.6.0_10 

-rwxr-xr-x  1 user user 79862715 2008-11-06 02:11 jdk-6u10-rc-bin-b28-linux-i586-21_jul_2008.bin 

如果再加乙個-v的話輸出的則是以上結果以外的結果

grep 「^[^210]」 myfile//這句的意思是打出所有不以2開頭的行

^這個符號是匹配的意思

^+n(

匹配的內容

),表示以

n打頭的內容

eg:^-

所有以-

開頭的行,

^d所有以

d開頭的行

^[^+n(

匹配的內容

)]打出所有不以

n開頭的行

eg:^[^d]

打出不以

d開頭的行

grep 「\?」 test.txt意為查詢出問號,同理也可以查詢其它的內容:

grep 「\要查詢的內容

」 test.txt

eg

grep 「\myfile」 test.txt查詢出

myfile

grep "^d" lsout.txt的含義為:

打出檔案中的目錄行,也就是找出資料夾

grep "^[^d]" lsout.txt含義為:

打出檔案中的非目錄行,也就是找出檔案

補:

wc –l只顯示列數

grep 「\myfile」 test.txt|wc –l

只顯示行數,顯示有幾行

myfile,如果一行上有幾個

myfile,則當成乙個處理

強大的grep用法詳解 grep與正規表示式

首先要記住的是 正規表示式與萬用字元不一樣,它們表示的含義並不相同 正規表示式只是一種表示法,只要工具支援這種表示法,那麼該工具就可以處理正規表示式的字串。vim grep awk sed 都支援正規表示式,也正是因為由於它們支援正則,才顯得它們強大 在以前上班的公司裡,由於公司是基於web的服務型...

強大的grep用法詳解 grep與正規表示式

from 首先要記住的是 正規表示式與萬用字元不一樣,它們表示的含義並不相同 正規表示式只是一種表示法,只要工具支援這種表示法,那麼該工具就可以處理正規表示式的字串。vim grep awk sed 都支援正規表示式,也正是因為由於它們支援正則,才顯得它們強大 在以前上班的公司裡,由於公司是基於we...

grep命令詳解與實踐

grep命令檔案過濾分割與合併 grep global search regular expression re and print out the line,全面搜尋正規表示式並把行列印出來 是一種強大的文字搜尋工具,它能使用正規表示式搜尋文字,並把匹配的行列印出來。選項 a 不要忽略二進位制資料...