搜尋
首頁php教程PHP开发linux管道命令grep

linux管道命令grep

Dec 13, 2016 pm 02:26 PM
grep

功能說明:尋找文件裡符合條件的字串。

語法: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或--i​​gnore-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」參數相同。
  --help   線上幫助。

linux grep命令的使用
用grep命令 搜尋文字檔案 來自www.linuxso.com

如果您要在幾個文字檔案中尋找一字串,可以使用‘grep’命令。 ‘grep’在文字中搜尋指定的字串。
假設您正在'/usr/src/linux/Documentation'目錄下搜尋帶有字串'magic'的檔案:
$ grep magic /usr/src/linux/Documentation/*
sysrq.txt:* How do I enable the magic SysRQ key?
sysrq.txt:* How do I use the magic SysRQ key?
 

其中檔案‘sysrp.txt’包含該字串,討論的是 SysRQ 的功能。
預設情況下,‘grep’只搜尋目前目錄。如果此目錄下有許多子目錄,‘grep’會以如下形式列出:
grep: sound: Is a directory
這可能會使‘grep’的輸出難於閱讀。這裡有兩種解決的辦法:
明確要求搜尋子目錄:grep -r
或忽略子目錄:grep -d skip
當然,如果預料到有許多輸出,您可以透過管道將其轉到'less'上閱讀
$ grep magic /usr/src/linux/Documentation/* | less
這樣,您就可以更方便地閱讀。
有一點要注意,您必需提供一個文件過濾方式(搜尋全部文件的話用 *)。如果您忘了,‘grep’會一直等著,直到程式中斷。如果您遇到了這樣的情況,按 ,然後再試。
下面是一些有意思的命令列參數:
grep -i pattern files :不區分大小寫地搜尋。預設區分大小寫,
grep -l pattern files :只列出匹配的文件名,
grep -L pattern files :列出不匹配的文件名,
grep -w pattern files :只匹配整個單詞,而不是字串的一部分(如符合'magic',而不是'magical'),
grep -C number pattern files :符合的上下文分別顯示[number]行,
grep pattern1 | pattern2 files :顯示符合pattern1 或pattern2 的行,
grep pattern1 files | grep pattern2 :顯示既符合pattern1 又符合pattern2 的行。
這裡還有些用於搜尋的特殊符號:
分別標註單字的開始與結尾。
例如:
grep man * 會匹配'Batman'、'manic'、'man'等,
grep 'grep ' ' 只符合'man',而不是'Batman'或'manic'等其他的字串。
'^':指匹配的字串在行首,
'$':指匹配的字串在行尾,
如果您不習慣命令列參數,可以試試圖形介面的‘grep’,如 reXgrep 。這個軟體提供 AND、OR、NOT 等語法,還有漂亮的按鈕 :-) 。如果您只是需要更清楚的輸出,不妨試試 fungrep 。

.grep 搜尋字串
指令格式:
grep string filename
尋找字串的方法很多,比如說我想找所有以M開頭的行.此時必須引進pattern的觀
念.以下是一些簡單的念. □例,以及說明:
^M 以M開頭的行,^表示開始的意思
M$ 以M結尾的行,$表示結束的意思
^[0-9] 以數字開始的行,[]內可列舉字母
^[124ab] 以1,2,4,a,或b開頭的行
^b.503 句點表示任一字母
* 星號表示0個以上的字母(可以沒有)
+ 加號表示1個以上的字母
. 斜線可以去掉特殊意義
 cat passwd | grep ^b 列出大學部有申請帳號者名單
cat passwd | grep ^s passwd | grep '^b.503' 列出電機系各年級...
grep '^.' myfile.txt 列出所有以句點開頭的行

~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

1. grep簡介

 

grep (global search regular expression(RE) and print out the line,全面搜索正則表達式並把行打印出來)是一種強大的文本搜索工具,它能使用正則表達式搜索文本,並把匹配的行打印出來。 Unix的grep家族包 括grep、egrep和fgrep。 egrep和fgrep的指令只跟grep有很小不同。 egrep是grep的擴展,支援更多的re元字符, fgrep就是fixed grep或fast grep,它們把所有的字母都看作單詞,也就是說,正則表達式中的元字符表示回其自身的字面意義,不再特殊。 linux使用GNU版本的grep。它功能 更強,可以透過-G、-E、-F命令列選項來使用egrep和fgrep的功能。

grep的工作方式是這樣的,它在一個或多個檔案中搜尋字串模板。如果模板包括空格,則必須被引用,模板後的所有字串被視為檔案名稱。搜尋的結果送到螢幕,不影響原文件內容。

grep可用於shell腳本,因為grep透過傳回狀態值來說明搜尋的狀態,如果範本搜尋成功,則傳回0,如果搜尋不成功,則傳回1,如果搜尋的檔案不存在,則傳回2。我們利用這些回傳值就可進行一些自動化的文字處理工作。

 

        2. grep正規表示式元字元集(基本集)

 

^

錨定行的開始符合

$

錨定行的結束 如:'grep$'符合所有以grep結尾的行。

符合一個非換行符的字符 如:'gr.p'匹配gr後接一個任意字符,然後是p。

*

符合零個或多個先前字元 如:'*grep'符合所有一個或多個空格後緊接grep的行。 .*一起用代表任意字元。

[]

匹配一個指定範圍內的字符,如'[Gg]rep'匹配Grep和grep。

[^]

匹配一個不在指定範圍內的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一個字母開頭,緊跟rep的行。

(..)

標記匹配字符,如'(love)',love被標記為1。

錨定單字的開始,如:'

>

錨定單字的結束,如'grep>'符合包含以grep結尾的單字的行。

x{m}

重複字元x,m次,如:'0{5}'符合包含5個o的行。

x{m,}

重複字元x,至少m次,如:'o{5,}'符合至少有5個o的行。

x{m,n}

重複字元x,至少m次,不多於n次,如:'o{5,10}'符合5--10個o的行。

w

匹配文字和數字字符,也就是[A-Za-z0-9],如:'Gw*p'匹配以G後跟零個或多個文字或數字字符,然後是p。

W

w的反置形式,匹配一個或多個非單字字符,如點號句號等。

 

b

單字鎖定符,如: 'bgrepb'只符合grep。

3. 用於egrep和 grep -E的元字符擴展集

+

匹配一個或多個先前的字符。如:'[a-z]+able',符合一個或多個小寫字母後面接able的串,如loveable,enable,disable等。

?

符合零個或多個先前的字元。如:'gr?p'匹配gr後面跟著一個或沒有字符,然後是p的行。

a|b|c

匹配a或b或c。如:grep|sed符合grep或sed

()

分組符號,如:love(able|rs)ov+符合loveable或lovers,符合一個或多個ov。

x{m},x{m,},x{m,n}

作用同x{m},x{m,},x{m,n}

4. POSIX字符類

為了在不同國家的字元編碼中保持一至,POSIX(The Portable Operating System Interface)增加了特殊的字元類,如[:alnum:]是A-Za-z0-9的另一個寫法。要把它們放到[]號內才能成為正規表示式,如[A- Za-z0-9]或[[:alnum:]]。在linux下的grep除fgrep外,都支援POSIX的字元類別。

[:alnum:]

文字數字字元

[:alpha:]

文字字元

[:digit:]

數字字元

控製字元)

[:lower:]

小寫字元

[:cntrl:]

控製字元

[:print:]

[標點符號

[:space:]

所有空白字元(新行,空格,製表符)

[:upper:]

大寫字元

[:xdigit:]

0-9,a-f,A-F)

5. Grep指令選項

-?

同時顯示符合行上下的?行,如:grep -2 pattern filename同時顯示符合行的上下2行。

-b,--byte-offset

列印符合行前面列印該行所在的區塊號碼。

-c,--count

只印出符合的行數,不顯示符合的內容。

-f File,--file=File

從檔案擷取範本。空文件中包含0個模板,所以什麼都不符。

-h,--no-filename

當搜尋多個檔案時,不顯示符合檔案名稱前綴。

-i,--ignore-case

忽略大小寫差異。

-q,--quiet

取消顯示,只回傳退出狀態。 0則表示找到了符合的行。

-l,--files-with-matches

列印符合範本的檔案清單。

-L,--files-without-match

列印不符範本的檔案清單。

-n,--line-number

在符合的行前面印出行號。

-s,--silent

不顯示關於不存在或無法讀取檔案的錯誤訊息。

-v,--revert-match

反檢索,只顯示不符合的行。

-w,--word-regexp

如果被引用,就把表達式做為一個單字搜尋。

-V,--version

顯示軟體版本資訊。

6. 實例

要用好grep這個工具,其實就是要寫好正規表達式,所以這裡不對grep的所有功能進行實例講解,只列幾個例子,講解一個正規表達式的寫法。

$ ls -l | grep '^a'

透過管道過濾ls -l輸出的內容,只顯示以a開頭的行。

$ grep 'test' d*

顯示所有以d開頭的檔案中包含test的行。

$ grep 'test' aa bb cc

顯示在aa,bb,cc檔案中符合test的行。

$ grep '[a-z]{5}' aa

顯示所有包含每個字串至少有5個連續小寫字元的字串的行。

$ grep 'w(es)t.*1' aa

如果west被匹配,則es就被儲存到記憶體中,並標記為1,然後搜尋任意個字元(.*),這些字元後面緊跟著另外一個es(1),找到就顯示該行。如果用egrep或grep -E,就不用""號進行轉義,直接寫成'w(es)t.*1'就可以了。


陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具