Linux grep命令的示例用法

介紹

Linux grep命令用作過濾輸入的方法。

GREP代表全局正則表達式打印機,因此為了有效地使用它,您應該對正則表達式有所了解。

在本文中,我將向您展示一些將幫助您理解grep命令的示例。

09年01月

如何使用GREP在文件中搜索字符串

Linux grep命令。

想像一下,你有一個名為書籍的文本文件,其中包含以下兒童書名:

要在標題中查找所有帶有“The”字樣的書籍,請使用以下語法:

grep這些書

以下結果將被返回:

在每種情況下,單詞“The”都將突出顯示。

請注意,搜索區分大小寫,所以如果其中一個標題具有“the”而不是“The”,那麼它將不會被返回。

要忽略情況,您可以添加以下開關:

grep the books --ignore-case

您也可以使用-i開關,如下所示:

grep - 我的書

09年02月

使用通配符搜索文件中的字符串

grep命令非常強大。 您可以使用多種模式匹配技術來過濾結果。

在這個例子中,我將向您展示如何使用通配符在文件中搜索字符串。

想像一下,你有一個名為蘇格蘭地名的文件:

阿伯丁

阿伯里斯特威斯

亞伯勞爾

因弗魯

因弗內斯

紐堡

新鹿

新蓋洛韋

格拉斯哥

愛丁堡

如果您想在名稱中找到所有包含inver的地方,請使用以下語法:

grep inver *地方

星號(*)通配符代表0或許多。 因此,如果你有一個名叫inver的地方或一個叫做inverness的地方,那麼兩個人都會被退回。

另一個可以使用的通配符是句點(。)。 你可以用它來匹配一個字母。

grep inver.r的地方

上面的命令會找到稱為inverurie和inverary的地方,但不會找到謹慎的地方,因為在兩個r之間只能有一個通配符,如單個週期所示。

週期通配符很有用,但是如果您有一個作為您正在搜索的文本的一部分,則可能會導致問題。

例如看看這個域名列表

要查找所有about.com,只需使用以下語法進行搜索即可:

grep *關於*域名

如果列表中包含以下名稱,則上述命令將失效:

因此,您可以嘗試以下語法:

grep * about.com域名

除非有以下名稱的域名,否則這將工作正常:

aboutycom.com

要真正搜索術語about.com,您需要按如下方式轉義點:

grep *關於\ .com域名

最後顯示的通配符是代表零個或一個字符的問號。

例如:

grep?ber地名

上述命令將返回阿貝丁,aberystwyth甚至berwick。

09年3月

搜索字符串的開始和結束使用grep

克拉(^)和美元($)符號允許您在行首和行尾搜索模式。

想像一下,你有一個名為足球的文件,其隊名如下:

如果你想找到所有以曼徹斯特隊開始的隊伍,你可以使用下面的語法:

grep ^曼徹斯特隊

上述命令將返回曼城和曼聯,但不是FC曼徹斯特聯隊。

或者,您可以使用以下語法查找以United結尾的所有團隊:

grep United $隊

上述命令將返回曼聯和紐卡斯爾聯隊,但不會返回曼徹斯特聯隊。

09年9月4日

使用grep計數匹配數量

如果你不想使用grep返回匹配模式的實際行,但你只想知道有多少可以使用下面的語法:

grep -c模式輸入文件

如果模式匹配兩次,則返回數字2。

09年05月05日

查找所有使用grep不匹配的術語

想像一下,你有一個地名列表,列出的國家如下:

您可能已經註意到,科林灣沒有任何國家與之相關聯。

要搜索具有國家/地區的所有地點,您可以使用以下語法:

grep land $地方

結果返回將是所有地方除了colwyn海灣。

這顯然只適用於以土地為終點的地方(幾乎不科學)。

您可以使用以下語法反轉選擇:

grep -v地點$地方

這會找到所有沒有土地的地方。

09年06月

如何使用grep在文件中查找空行

假設您有一個輸入文件,第三方應用程序使用該輸入文件,該文件在發現空行時會停止讀取文件,如下所示:

當應用程序在利物浦後到達線路時,它將停止閱讀,意味著科爾溫灣完全錯過了。

您可以使用grep通過以下語法搜索空行:

grep ^ $地方

不幸的是,這不是特別有用,因為它只是返回空白行。

您當然可以通過檢查空白行數來檢查文件是否有效,如下所示:

grep -c ^ $地方

然而,知道有空行的行號會更有用,因此可以替換它們。 你可以用下面的命令來做到這一點:

grep -n ^ $地方

09年7月

如何使用grep搜索大寫或小寫字符的字符串

使用grep您可以使用以下語法確定文件中的哪些行具有大寫字符:

grep'[AZ]'文件名

用方括號[]可以確定字符的範圍。 在上面的例子中,它匹配A和Z之間的任何字符。

因此,要匹配小寫字符,可以使用以下語法:

grep'[az]'文件名

如果您只想匹配字母而不是數字或其他符號,則可以使用以下語法:

grep'[a-zA-Z]'文件名

你可以使用如下的數字來做同樣的事情:

grep'[0-9]'文件名

09年08月08日

尋找使用grep重複模式

您可以使用大括號{}來搜索重複模式。

想像一下你有一個電話號碼如下的文件:

您知道該號碼的第一部分需要三位數字,並且您希望找到與該模式不匹配的行。

從前面的例子你知道[0-9]返回文件中的所有數字。

在這種情況下,我們需要以三個數字開頭的連字符後跟一個連字符( - )。 你可以用下面的語法來做到這一點:

grep“^ [0-9] [0-9] [0-9] - ”數字

正如我們從前面的例子中知道的那樣,克拉(^)意味著該行必須以下面的模式開始。

[0-9]將搜索0到9之間的任何數字。因為它包含三次,所以它匹配3個數字。 最後有一個連字符來表示連字符必須成功的三個數字。

通過使用大括號可以使搜索變小,如下所示:

grep“^ [0-9] \ {3 \} - ”數字

斜杠轉義{括號,以便它作為正則表達式的一部分工作,但實質上這是說[0-9] {3},它表示0到9之間的任何數字三次。

大括號也可以使用如下:

{5,10}

{5,}

{5,10}表示被搜索的角色必須重複至少5次,但不超過10次,而{5}則表示角色必須重複至少5次,但可以超過此次數。

09年9月9日

使用其他命令的輸出使用grep

到目前為止,我們已經看到了單個文件內的模式匹配,但grep可以使用其他命令的輸出作為模式匹配的輸入。

一個很好的例子是使用列出活動進程的ps命令。

例如運行以下命令:

ps -ef

系統上的所有正在運行的進程都會顯示出來。

您可以使用grep來搜索特定的正在運行的進程,如下所示:

ps -ef | grep firefox

概要

grep命令是一項基本的Linux命令,非常值得學習,因為它可以使您在使用終端時搜索文件和進程時更輕鬆。