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