grep命令的全稱是全局正則表達(dá)式打印,它是Linux中功能最強(qiáng)大且最常用的命令之一。
grep在一個(gè)或多個(gè)輸入文件中搜索與指定模式匹配的行,并將匹配行寫入標(biāo)準(zhǔn)輸出。如果未指定文件,grep則從標(biāo)準(zhǔn)輸入讀取內(nèi)容。
在本教程中,我們將向您展示如何使用grep
對標(biāo)準(zhǔn)輸出進(jìn)行過濾,排除 。這其中包括排除不匹配的行,排除目錄和文件等。
grep 反轉(zhuǎn)匹配
要僅打印與搜索模式不匹配的行,可以使用grep
命令的-v
或--invert-match
選項(xiàng)進(jìn)行反轉(zhuǎn)的匹配。
注意grep
會區(qū)分大小寫。這意味著大寫和小寫被視為不同的字符。要在搜索時(shí)忽略大小寫,使用-i
選項(xiàng)調(diào)用grep
。
如果搜索字符串包含空格,只需要將其括在單引號或雙引號中。grep就會搜索空格,你也可以使用正則表達(dá)式表示空格的匹配。
例如命令ps aux | grep fnord | grep -v grep
在搜索進(jìn)程的時(shí)候排除自身的進(jìn)程。
ps aux | grep fnord | grep -v grep
grep 排除單詞
-w
選項(xiàng)用于匹配整個(gè)單詞,例如你要搜索gnu,但內(nèi)容包含單詞cygnus
或magnum
等單詞,在使用-w
選項(xiàng)時(shí)將不會這些單詞,僅僅匹配單詞gnu
。
要排除單詞可以組合使用grep命令的-wv
選項(xiàng)。例如命令grep -wv nologin etc/passwd
將會要打印不包含nologin
行。
也可以使用grep命令-e
選項(xiàng)同時(shí)排除多個(gè)單詞。例如命令grep -wv -e nologin -e bash etc/passwd
。
排除多個(gè)單詞的另一個(gè)選項(xiàng)是使用OR運(yùn)算符|
。例如命令grep -wv 'nologin\\|bash' etc/passwd
命令打印不包含字符串nologin
或bash
的行。
grep -wv nologin etc/passwd
grep -wv -e nologin -e bash etc/passwd
grep -wv 'nologin\\|bash' etc/passwd
grep 排除正則表達(dá)式
GNUgrep
支持三種正則表達(dá)式語法,Basic、Extended和Perl-compatible。默認(rèn)情況下,grep
將模式解釋為Basic正則表達(dá)式。
當(dāng)你在正則表達(dá)式中使用使用OR運(yùn)算符|
時(shí),必須使用反斜杠\\
進(jìn)行轉(zhuǎn)義。因?yàn)閟hell會將|
解釋Linux管道。
如果你使用的擴(kuò)展正則表達(dá)式,則|
不不需要轉(zhuǎn)義,即不需要反斜杠\\
,-E
選項(xiàng)指示grep
命令使用擴(kuò)展正則表達(dá)式。
例如命令grep -Ewv 'nologin|bash' etc/passwd
和grep -wv 'nologin\\|bash' etc/passwd
是等效的,前者使用的是擴(kuò)展表達(dá)式,后者使用基本正則表達(dá)式。
grep -Ewv 'nologin|bash' etc/passwd
grep -wv 'nologin\\|bash' etc/passwd
grep 排除目錄和文件
有時(shí),當(dāng)使用-r
或-R
選項(xiàng)執(zhí)行遞歸搜索目錄或者文件時(shí),您可能希望從搜索結(jié)果中排除指定的目錄。
-r
或-R
選項(xiàng)之間的主要區(qū)別在于,當(dāng)使用大寫字母R
運(yùn)行g(shù)rep命令時(shí),它將追蹤所有符號鏈接文件。
grep命令的--exclude-dir
選項(xiàng)允許排除多個(gè)文件與目錄。排除目錄的路徑是相對于搜索的起始目錄。
例如命令grep -R --exclude-dir=pki myfreax /etc
將會在/etc
目錄中搜索包含字符串myfreax
的文件,但不包括etc/pki
目錄。
grep -R --exclude-dir=pki myfreax /etc
grep 排除多個(gè)文件與目錄
如果要排除多個(gè)目錄,請將排除的目錄括在大括號中,并用逗號分隔,不要有空格。
在使用通配符匹配時(shí),您可以使用grep
命令--exclude
選項(xiàng)并指定的GLOB來排除不需要結(jié)果。
例如命令grep -rl --exclude=*.{png,jpg} myfreax *
將會在當(dāng)前工作目錄搜索包含字符串myfreax
的文件,但不包括以.png
和.jpg
目錄結(jié)尾的文件。
命令grep -r --exclude-dir={proc,boot,sys} gnu /
在你的Linux系統(tǒng)的根目錄/
開始搜索包含字符串GNU
的文件,并且排除proc
,boot
和sys
目錄
grep -rl --exclude=*.{png,jpg} myfreax *
grep -r --exclude-dir={proc,boot,sys} gnu /
結(jié)論
grep
命令允許您在搜索文件時(shí)排除模式和目錄。
-
Linux
+關(guān)注
關(guān)注
87文章
11412瀏覽量
212247 -
命令
+關(guān)注
關(guān)注
5文章
719瀏覽量
22621 -
grep
+關(guān)注
關(guān)注
0文章
23瀏覽量
4825
發(fā)布評論請先 登錄
相關(guān)推薦
如何對集成電路模擬輸入和輸出進(jìn)行高壓瞬變保護(hù)

12個(gè) Linux 中 grep 命令的超級用法實(shí)例
如何從SOF,EOL,DE和數(shù)據(jù)作為輸出進(jìn)行解碼
一個(gè)穩(wěn)壓器對其電壓電流的輸出進(jìn)行管理
如何對printf函數(shù)的輸出進(jìn)行重定向呢
grep學(xué)習(xí)筆記
Linux中用grep命令來搜索單詞及統(tǒng)計(jì)匹配的行數(shù)
醫(yī)用防護(hù)口罩過濾測試儀的測試原理及測試標(biāo)準(zhǔn)
Linux中的Grep正則表達(dá)式詳細(xì)資料說明
grep命令常用的選項(xiàng)詳解
ZMID5201 使用模擬輸出進(jìn)行校準(zhǔn)和線性化的手冊

ZMID5201 使用模擬輸出進(jìn)行校準(zhǔn)和線性化的手冊

評論