成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何在 Linux/macOS 中使用 grep 命令

系統
在本教程中,您將學習如何將 grep 與字符串、基本正則表達式和擴展正則表達式一起使用。

全局正則表達式打印(grep)是一個強大的工具,可以在文本文件或標準輸入中搜索匹配正則表達式的行,并將結果打印到標準輸出。正則表達式(regex)是一種特殊的字符序列,可以幫助你有效地匹配文本或文件中的字符串。

在UNIX/Linux中,grep命令通常與正則表達式一起使用,以在文件中查找匹配的行。grep命令的一般語法如下:

grep [options] pattern [file...]

其中,pattern是要匹配的正則表達式模式,file是要搜索的文件名或文件路徑??梢允÷詅ile參數,此時grep將從標準輸入中讀取數據。

grep命令將輸出所有匹配的行,以及行中的匹配部分會被高亮顯示??梢允褂貌煌倪x項來控制grep的行為,例如使用-i選項進行忽略大小寫的匹配,使用-r選項進行遞歸搜索等。

基本正則表達式字符支持以下內容:

擴展正則表達式支持基本正則表達式和一些附加字符:

若要跳過這些字符中的任何一個并將其視為字符串文本,請在它們前面放置一個反斜杠。例如,如果不希望將 視為正則表達式字符,而僅將其視為問號,請使用 。這適用于所有正則表達式。?\?

Grep 默認支持基本正則表達式和帶有選項的擴展正則表達式。如果您愿意,可以單獨使用 ,稱為:-Egrep -Eegrep

在本教程中,您將學習如何將 grep 與字符串、基本正則表達式和擴展正則表達式一起使用。

grep語法

grep [options] 'expression' text

[選項] 例如或 –,我們將在稍后探索它們。

表達式表示搜索模式,該模式可以是字符串文本或正則表達式。

文本表示標準輸入,可以是文件、多個文件或其他命令的輸出。

我在一個名為 movies 的文件中準備了電影列表.txt我們將使用此文本文件作為 grep 的輸入,并在此文件中搜索特定的搜索模式。

Top movies of all time:

The Shawshank Redemption (1994) - 9.2
The Godfather (1972) - 9.2
The Dark Knight (2008) - 9.0
the godfather part II (1974) - 9.0
Angry Men (1957) - 8.9
City of God (2002) - 8.6

基本搜索

看看《教父》是否在電影中.txt:

grep 'Godfather' movies.txt

輸出:

Grep 返回包含搜索詞“教父”的行。

將 grep 與正則表達式一起使用

示例 1:搜索前面有“The”的影片。

grep '^The' movies.txt

輸出:

眾所周知,正則表達式中的符號與以前面字符開頭的行匹配。

示例 2:搜索 2000 年之后發行的電影:

grep '20[0-9][0-9]' movies.txt

輸出:

2000 年之后的電影可以表示為 20xx,每個 x 是 0 到 9 之間的任意數字,因此在表達式中替換為 [0-9]。

什么是 egrep?

如前所述,是另一個允許使用擴展正則表達式的命令。讓我們看一個例子:查找帶有“教父”或“黑暗”一詞的電影

我們知道擴展正則表達式中的 OR 由 表示:

grep -E 'Godfather|Dark' movies.txt

輸出:

如果我們單獨使用 grep(沒有 -E 選項),上面的命令不會返回任何內容,因為它將符號視為文字而不是特殊字符。|

此外,上述命令等效于以下命令:

egrep 'Godfather|Dark' movies.txt

忽略區分大小寫

如果你注意到在電影.txt文件中,我們也有帶有小寫字母的電影“教父第二部分”,但我們使用搜索詞“教父”的搜索都沒有返回這一行。這是因為 grep 區分大小寫,我們可以使用選項忽略區分大小寫:

grep -i 'Godfather' movies.txt

輸出:

我們可以看到,無論大小寫如何,都返回了帶有“教父”一詞的兩行。

搜索完整單詞

讓我們看看如果我們搜索“上帝”這個詞會發生什么:

grep 'God' movies.txt

輸出:

兩部關鍵詞為“教父”和“上帝”的電影都是匹配的。這是因為兩個關鍵字都有字母“上帝”。

要只匹配“上帝”(完整單詞),您可以使用 -w 選項:

grep -w 'God' movies.txt

輸出:

僅返回匹配的單詞

我們可以使用選項只返回搜索的單詞,而不是整行。

grep -o 'Godfather' movies.txt

輸出:

反向搜索

反轉搜索返回除“表達式”之外的所有內容。這與正常搜索相反。

例如,讓我們返回所有沒有“上帝”一詞的電影:

grep -v 'God' movies.txt

輸出:

我們可以看到所有沒有“上帝”一詞的電影。然而,我們仍然在那里看到“教父”。這是因為我們在搜索詞中沒有忽略區分大小寫。我們可以將 -i 選項與 -v 結合使用,如下所示:

grep -iv 'God' movies.txt

輸出:

返回帶有行號的結果

如果要編輯與“表達式”匹配的行,查找行號可能非常有用,為此,請使用 -n 選項:

grep -n 'Angry Men' movies.txt

輸出:

我們有它?!皯嵟娜恕币辉~出現在第 7 行。

我們可以使用像 vim 這樣的編輯器來編輯該特定行:

vim +7 movies.txt

它將直接帶您到第 7 行。

計算匹配字數

如果我們想知道有多少電影有“上帝”這個詞,我們可以使用 -c 選項:

grep -c 'God' movies.txt

輸出:

同樣,我們可以結合選項來了解有多少電影的標題中有“上帝”或“上帝”。

grep -ic 'god' movies.txt

輸出:

返回完全匹配(全行)

要了解搜索詞(表達式)是否與行匹配,請使用 -x 選項:

grep -x 'City of God (2002) - 8.6' movies.txt

僅當整行與搜索的詞匹配時,它才會匹配:

返回具有搜索詞的文件名

要查看哪些文件具有我們的搜索詞(表達式),我們使用 -l 選項。我們可以將多個文件名傳遞給它或使用星號 (*):

grep -l 'Godfather' movies.txt grep.sh

或:

grep -l 'Godfather' ./*

在這里,我們告訴 grep 在當前目錄中的任何文件中查找“教父”。

輸出:

./grep.sh
./movies.txt

單獨使用 option 只會搜索當前目錄,如果當前目錄中有子目錄,grep 不會搜索它們并拋出錯誤。那是因為 grep 需要一個文件。為了克服這個問題,我們將遞歸查找任何文件的選項結合起來。

grep -lr 'Godfather' ./grep

點 (.) 表示 Linux 中的當前目錄。

輸出:

返回文件名和匹配的行

這就像具有額外功能的選項一樣,可以返回文件中匹配行的外觀。-l

我們使用 -H 選項:

grep -Hr 'Godfather' ./grep

輸出:

如您所見,-H 選項返回文件名以及匹配的行,用冒號 (:) 分隔。

比賽結束后返回其他行

有時我們想知道匹配行之后有哪些行。我們可以像下面這樣使用 -A 選項。

要在匹配行之后打印另外 2 行:

grep -A2 'Dark Knight' movies.txt

輸出:

因此,我們不僅有與表達式“黑暗騎士”匹配的行,而且我們還有后面的 2 行。

賽前返回線

這就像 -A 選項,但它在相反的方向上工作。我們使用 -B(之前)來實現這一點。

要在具有匹配表達式“黑暗騎士”的行之前獲取 2 行:

grep -B2 'Dark Knight' movies.txt

輸出:

賽前和賽后的回程線

這結合了 -A 和 -B 選項。我們使用 -C 來實現這一點。

要返回帶有術語“黑暗騎士”的行之前的 2 行和之后的 2 行:

grep -C2 'Dark Knight' movies.txt

輸出:

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

我們可以使用 Linux 管道將任何命令的輸出作為標準輸入傳遞給 grep,并以與搜索文件相同的方式搜索它。

例如,讓我們搜索命令的輸出。

僅列出目錄:

ls -l | grep '^d'

從正則表達式中,我們知道這意味著匹配輸出中以字母“d”開頭的任何行,這意味著 Linux 中的目錄。

輸出:

結論

grep 是 UNIX 系統中一個非常強大和有用的命令,如果使用得當,可以節省我們寶貴的時間。使用正則表達式可以非常有效和高效地搜索文件、多個文件、目錄中的文本模式和其他命令的輸出。在本教程中,我們解釋了如何將 grep 與正則表達式一起使用,并演示了一些最有用的 grep 選項。

責任編輯:趙寧寧 來源: 微技術之家
相關推薦

2021-07-13 07:52:02

Linuxgrep命令

2021-07-20 10:00:28

Linuxgrep命令

2022-10-25 09:07:28

Linuxxargs命令

2018-05-16 10:32:06

Linux命令find

2018-06-26 09:15:24

Linux命令history

2022-11-18 10:16:26

Linuxwc 命令

2021-01-13 09:40:26

Linuxexport命令

2023-01-31 17:36:22

IPLinux網絡

2019-09-16 19:00:48

Linux變量

2018-04-28 09:12:42

Linux

2022-05-25 08:41:48

Linuxfd 命令文件

2022-11-21 12:06:24

fgrep命令Linux

2022-03-30 09:32:32

BashtestLinux

2022-11-23 08:14:42

bash 腳本test 命令

2018-07-26 09:55:44

Linux命令升級軟件

2023-01-09 10:29:41

mv命令Linux

2018-01-09 09:00:01

Linux命令文件壓縮

2018-10-09 08:30:55

UbuntuLinuxRAR文件

2019-09-29 09:40:20

LinuxWindowsMacOS

2021-03-29 10:10:15

Linuxgrep
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91亚洲国产精品 | 黄色大片观看 | 欧美a√| 91麻豆精品国产91久久久更新资源速度超快 | 国产中文视频 | 欧美一区二区免费在线 | 男女网站免费观看 | 国产日韩av一区二区 | 日本精品久久久久久久 | 久久久久久久久国产 | 亚洲国产一区在线 | 国产999精品久久久久久 | 久久99精品国产自在现线小黄鸭 | 国产精品色一区二区三区 | wwww.xxxx免费 | 精品视频在线观看 | 青青草在线视频免费观看 | 国产综合久久 | 亚洲国产成人精品女人久久久 | 91精品国产一区二区三区蜜臀 | 一区二区三区免费 | 精品久 | 欧美久久久久久久 | 久久久91精品国产一区二区三区 | 精品国产一区二区三区久久久久久 | 日韩一级黄色毛片 | 亚洲综合久久精品 | 国产成人精品一区二区三区网站观看 | 99reav| 91视频网址 | 欧美手机在线 | 国产精品久久久久久久久久妞妞 | 日韩成人免费视频 | 都市激情亚洲 | 亚洲高清视频在线观看 | 久久久亚洲一区 | 中文字幕视频在线观看 | 亚洲女人天堂成人av在线 | 国产激情精品 | 欧美精品国产一区二区 | 日韩欧美视频在线 |