Linux基礎(chǔ)命令grep的用法-創(chuàng)新互聯(lián)

本篇內(nèi)容主要講解“Linux基礎(chǔ)命令grep的用法”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“Linux基礎(chǔ)命令grep的用法”吧!

成都創(chuàng)新互聯(lián)致力于做網(wǎng)站、成都網(wǎng)站建設(shè),成都網(wǎng)站設(shè)計(jì),集團(tuán)網(wǎng)站建設(shè)等服務(wù)標(biāo)準(zhǔn)化,推過(guò)標(biāo)準(zhǔn)化降低中小企業(yè)的建站的成本,并持續(xù)提升建站的定制化服務(wù)水平進(jìn)行質(zhì)量交付,讓企業(yè)網(wǎng)站從市場(chǎng)競(jìng)爭(zhēng)中脫穎而出。 選擇成都創(chuàng)新互聯(lián),就選擇了安全、穩(wěn)定、美觀的網(wǎng)站建設(shè)服務(wù)!

grep

按照指定的模式,在文件中搜索匹配的行,將結(jié)果顯示在標(biāo)準(zhǔn)輸出。另外還有兩個(gè)指令egrep相當(dāng)于grep –E,fgrep相當(dāng)于grep -F。如果沒(méi)有給出文件名,那么從標(biāo)準(zhǔn)輸入讀取。

此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、語(yǔ)法

grep [選項(xiàng)]  PATTERN files

grep [OPTIONS]  [-e PATTERN | -f FILE]  [FILE...]

2、選項(xiàng)列表

選項(xiàng)

說(shuō)明

-V | --version

顯示命令版本信息

--help

顯示幫助文檔

匹配選擇


-E | --extended-regexp

使用擴(kuò)展規(guī)則表達(dá)式解釋匹配模式

-F | --fixed-strings

將匹配模式看做固定字符串

-G | --basic-regexp

使用基本規(guī)則表達(dá)式解釋匹配模式

-P | --perl-regexp

使用perl表達(dá)式解釋匹配模式

文件和目錄選擇控制


-a | --text

忽略二進(jìn)制數(shù)據(jù)

--binary-files=TYPE

如果文件的前幾個(gè)字節(jié)表示該文件包含二進(jìn)制數(shù)據(jù),則假定該文件類(lèi)型是TYPE。默認(rèn)情況下,TYPE為二進(jìn)制,grep通常輸出一行消息表示二進(jìn)制文件匹配,如果沒(méi)有匹配則不輸出消息。如果類(lèi)型不匹配,grep假定二進(jìn)制文件不匹配;這相當(dāng)于-i選項(xiàng)。如果TYPE是文本,grep會(huì)像處理文本一樣處理二進(jìn)制文件;這相當(dāng)于-a選項(xiàng)。警告:“grep-binary-files=text”可能會(huì)輸出二進(jìn)制垃圾,如果輸出是終端,并且終端驅(qū)動(dòng)程序?qū)⑵渲械囊恍┙忉尀槊?,則會(huì)產(chǎn)生嚴(yán)重的副作用。

-D action | --devices=ACTION

如果輸入文件是一個(gè)設(shè)備文件,那么用指定的action處理。read,像普通文件一樣讀取設(shè)備,skip,忽略設(shè)備

-d action | --directories=ACTION

如果查找的是目錄文件,那么使用指定的操作處理。read,像普通文件一樣讀取目錄;skip,忽略目錄;recursive,遞歸當(dāng)時(shí)讀取子目錄下文件。

--exclude=per

忽略文件名匹配per的文件       

--exclude-from=FILE

跳過(guò)其基本名稱(chēng)與從FILE中讀取的任何文件名全局匹配的文件。

--exclude-dir=DIR

從遞歸搜索中排除匹配模式DIR的目錄

-I

處理二進(jìn)制文件,就像它不包含匹配的數(shù)據(jù)一樣;等價(jià)于“--binary-files=without-match”

--include=GLOB

只搜索其基本名稱(chēng)與GLOB匹配的文件

-R | -r | --recursive

遞歸方式讀取目錄下所有文件

行數(shù)控制


-A num | --after-context=NUM

顯示匹配行以及之后指定的行數(shù)

-B num | --before-context=NUM

顯示匹配行以及之前指定的行數(shù)

-C num | -NUM | --context=NUM

顯示匹配行以及之前和之后的指定行數(shù)

輸出行控制


-b | --byte-offset

在顯示匹配的行之前,打印該行第一個(gè)字符的偏移位置

-H | --with-filename

為每個(gè)匹配的行顯示文件名,如果有多個(gè)文件的話(huà),這是默認(rèn)操作

-h | --no-filename

顯示匹配的行,但是不顯示文件名。如果搜索一個(gè)文件時(shí),這是默認(rèn)操作

-n | --line-number

顯示匹配的行之前,顯示行號(hào)

-T | --initial-tab

確保實(shí)際行內(nèi)容的第一個(gè)字符位于制表符停止上,使制表符的對(duì)齊看起來(lái)正常。

-u | --unix-byte-offsets

報(bào)告Unix樣式的字節(jié)偏移量。此開(kāi)關(guān)使grep報(bào)告字節(jié)偏移量,就像文件是Unix樣式的文本文件一樣

-Z | --null

輸出一個(gè)零字節(jié)(ASCII null字符),而不是通常跟隨文件名的字符。例如,“grep –lz”在每個(gè)文件名之后輸出一個(gè)零字節(jié),而不是通常的換行符。

輸出控制


-c | --count

統(tǒng)計(jì)符合匹配的行數(shù)

--color[=WHEN] |  --colour[=WHEN]

用轉(zhuǎn)義序列包圍匹配(非空)字符串、匹配行、上下文行、文件名、行號(hào)、字節(jié)偏移量和分隔符(用于字段和上下文行組),以便在終端上顯示它們的顏色。顏色由環(huán)境變量grep_colors定義。仍然支持不推薦的環(huán)境變量grep_color,但它的設(shè)置沒(méi)有優(yōu)先級(jí)。WHEN的有效值是never,always,auto。

-L | --files-without-match

禁止正常輸出;而是打印通常不會(huì)輸出的每個(gè)輸入文件的名稱(chēng)。掃描將在第一次匹配的時(shí)候停止。

-l

顯示內(nèi)容符合指定匹配模式的文件名

-m num  |  --max-count=NUM

在匹配num行之后,停止搜索

-o | --only-matching

只顯示匹配行的匹配字符

-q | --quite

靜默模式,搜索完成之后返回0

-s | --no-messages

不顯示文件不存在和文件不可讀的錯(cuò)誤信息

模式控制


-e parttern  |  --regexp=PATTERN

設(shè)置匹配模式

-f file  | --file=FILE

將給定的文件內(nèi)容作為匹配模式

-i  |  --ignore-case

忽略大小寫(xiě)

-v | --invert-match

顯示不符合匹配模式的行

-w | --word-regexp

顯示整個(gè)字都匹配的行

-x | --line-regexp

顯示整行都匹配的行

其他選項(xiàng)


--line-buffered

對(duì)輸出使用行緩沖。這會(huì)導(dǎo)致性能損失。

--mmap

如果可能,使用mmap(2)系統(tǒng)調(diào)用來(lái)讀取輸入,而不是默認(rèn)的read(2)系統(tǒng)調(diào)用。在某些情況下,mmap會(huì)產(chǎn)生更好的性能。但是,-mmap可能導(dǎo)致未定義的行為(包括核心轉(zhuǎn)儲(chǔ)),如果一個(gè)輸入文件在grep運(yùn)行時(shí)收縮,或者如果發(fā)生I/O錯(cuò)誤。

-U | --binary

將文件視為二進(jìn)制文件。

-z | --null-data

將輸入視為一組行,每一行以零字節(jié)(ASCII NUL字符)結(jié)尾,而不是換行符。

3、環(huán)境變量

grep的行為受到以下環(huán)境變量的影響。

GREP_OPTIONS,此變量指定放置在任何顯式選項(xiàng)前面的默認(rèn)選項(xiàng)。選項(xiàng)規(guī)范由空格分隔。反斜杠轉(zhuǎn)義下一個(gè)字符,因此它可以指定包含空格或反斜杠的選項(xiàng)。例如,如果GREP_OPTIONS是’--binary-files=without-match --directories=skip’,那么grep執(zhí)行的時(shí)候就假設(shè)已經(jīng)有了這兩個(gè)選項(xiàng)。

GREP_COLOR,此變量指定用于突出顯示匹配(非空)文本的顏色。

GREP_COLORS,指定用于突出顯示輸出的各個(gè)部分的顏色和其他屬性。它的值是一個(gè)以冒號(hào)分隔的功能列表,默認(rèn)為ms=01;31:mc=01;31:sl=:cx=:fn=35:ln=32:bn=32:se=36,省略了rv和ne布爾功能(即false)。支持的功能如下所示。

sl=,用于整個(gè)選定行的SGR子字符串(即-v命令行選項(xiàng)省略時(shí)的匹配行,或指定-v時(shí)不匹配的行)。但是,如果指定了布爾rv功能和-v命令行選項(xiàng),則它將應(yīng)用于上下文匹配行。默認(rèn)值為空(即終端的默認(rèn)顏色對(duì))。

cx=,用于整個(gè)上下文行的SGR子字符串(即省略-v命令行選項(xiàng)時(shí)的非匹配行,或指定-v時(shí)的匹配行)。但是,如果指定了布爾RV功能和-v命令行選項(xiàng),則它將適用于選定的非匹配行。默認(rèn)值為空(即終端的默認(rèn)顏色對(duì))。

rv,當(dāng)指定-v命令行選項(xiàng)時(shí),逆轉(zhuǎn)(掉期)“sl=”和“cx=”功能的布爾值。缺省值為false(即省略了功能)。

mt=01;31,用于匹配任何行中的非空文本的sgr子字符串。(這僅在省略-v命令行選項(xiàng)時(shí)使用。)當(dāng)啟動(dòng)時(shí),sl=(或cx=)能力的效果保持活躍。默認(rèn)值是當(dāng)前行背景上的粗體紅色文本前景。

ms=01;31,用于匹配選定行中的非空文本的sgr子字符串。(這僅在省略-v命令行選項(xiàng)時(shí)使用。)當(dāng)啟動(dòng)時(shí),sl=(或cx=)能力的效果保持活躍。默認(rèn)值是當(dāng)前行背景上的粗體紅色文本前景。

mc=01;31,用于匹配上下文行中的非空文本的sgr子字符串。(這僅在省略-v命令行選項(xiàng)時(shí)使用。)當(dāng)啟動(dòng)時(shí),sl=(或cx=)能力的效果保持活躍。默認(rèn)值是當(dāng)前行背景上的粗體紅色文本前景。

fn=35,用于任何內(nèi)容行前綴的文件名的SGR子字符串。默認(rèn)值是終端默認(rèn)背景上的洋紅色文本前景。

ln=32,任何內(nèi)容行前綴的行號(hào)的SGR子字符串。默認(rèn)值是終端默認(rèn)背景上的綠色文本前景。

bn=32,用于任何內(nèi)容行前綴的字節(jié)偏移的SGR子字符串。默認(rèn)值是終端默認(rèn)背景上的綠色文本前景。

se=36,當(dāng)指定了非零上下文(--),SGR子字符串用于在選定的行字段(:)、上下文行字段之間(-)和相鄰行組之間插入分隔符。默認(rèn)值是終端默認(rèn)背景上的青色文本前景。

ne,布爾值,該值防止在每次彩色項(xiàng)結(jié)束時(shí)使用擦除入行(EL)對(duì)右(\33[K]清除到行尾的值。這是在不支持EL的終端上需要的。對(duì)于沒(méi)有應(yīng)用Back_COLOR_ERASE(BCE)布爾終止功能的終端、所選擇的高亮顏色不影響背景、或者當(dāng)EL太慢或?qū)е逻^(guò)多閃爍時(shí),它在其他情況下是有用的。默認(rèn)值為false(即省略功能)

LC_ALL, LC_COLLATE, LANG,這些變量指定LC_COLLATE類(lèi)別的區(qū)域設(shè)置,該類(lèi)別確定用于解釋范圍表達(dá)式(如[a-z])的排序序列。

LC_ALL, LC_CTYPE, LANG,這些變量指定LC_CTYPE類(lèi)別的區(qū)域設(shè)置,它決定字符的類(lèi)型,例如,哪些字符是空格。

LC_ALL, LC_MESSAGES, LANG,這些變量指定LC_MESSAGES類(lèi)別的區(qū)域設(shè)置,它確定grep用于消息的語(yǔ)言。默認(rèn)的C語(yǔ)言環(huán)境使用美式英語(yǔ)消息。

POSIXLY_CORRECT,如果設(shè)置,grep的行為與POSIX.2所要求的一樣;否則,grep的行為更像其他GNU程序。POSIX.2要求必須將文件名后面的選項(xiàng)視為文件名;默認(rèn)情況下,這些選項(xiàng)被排到操作數(shù)列表的前面,并被視為選項(xiàng)。此外,POSIX.2還要求將未被承認(rèn)的選項(xiàng)診斷為“非法”,但由于它們并不真正違反法律,默認(rèn)情況是將它們?cè)\斷為“無(wú)效”。POSIXLY_RIDER還禁用_N_GNU_NOOPTION_ARGV_LANGS_,如下所述。

_N_GNU_nonoption_argv_flags_,(這里N是grep的數(shù)字進(jìn)程ID。)如果此環(huán)境變量值的ith字符為1,則不要將grep的ith操作數(shù)視為選項(xiàng),即使它似乎是選項(xiàng)之一。shell可以為其運(yùn)行的每個(gè)命令在環(huán)境中放置此變量,指定哪些操作數(shù)是文件名通配符展開(kāi)的結(jié)果,因此不應(yīng)被視為選項(xiàng)。此行為僅在GNU C庫(kù)中可用,且僅在未設(shè)置POSIXLY_RIDER時(shí)才可用。

4、退出碼

通常,如果找到選定的行,則退出狀態(tài)為0,否則為1。但是,如果發(fā)生錯(cuò)誤,退出狀態(tài)為2,除非使用-q、--quite、--slient選項(xiàng),并找到選定的行。但是,請(qǐng)注意,對(duì)于grep、CMP和diff等程序,POSIX只要求在出現(xiàn)錯(cuò)誤時(shí)的退出狀態(tài)大于1;因此,出于可移植性的考慮,建議使用對(duì)此一般條件進(jìn)行測(cè)試的邏輯,而不是與2嚴(yán)格相等的邏輯。

5、實(shí)例

1)顯示文件中以2開(kāi)頭的行

[root@localhost weijie]# cat 2.c

123

23

212

[root@localhost weijie]# grep ^2 2.c         //顯示以2開(kāi)頭的行

23

212

2)顯示不包含23的行 

[root@localhost weijie]# grep -v 23 2.c

212

3)顯示整個(gè)字都匹配的行 

[root@localhost weijie]# grep -w 23 2.c

23

到此,相信大家對(duì)“Linux基礎(chǔ)命令grep的用法”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢(xún),關(guān)注我們,繼續(xù)學(xué)習(xí)!

標(biāo)題名稱(chēng):Linux基礎(chǔ)命令grep的用法-創(chuàng)新互聯(lián)
標(biāo)題鏈接:http://bm7419.com/article14/gdige.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、響應(yīng)式網(wǎng)站、ChatGPT網(wǎng)站收錄、商城網(wǎng)站、做網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

營(yíng)銷(xiāo)型網(wǎng)站建設(shè)