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

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

系統(tǒng)
在本教程中,您將學(xué)習(xí)如何將 grep 與字符串、基本正則表達(dá)式和擴展正則表達(dá)式一起使用。

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

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

grep [options] pattern [file...]

其中,pattern是要匹配的正則表達(dá)式模式,file是要搜索的文件名或文件路徑??梢允÷詅ile參數(shù),此時grep將從標(biāo)準(zhǔn)輸入中讀取數(shù)據(jù)。

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

基本正則表達(dá)式字符支持以下內(nèi)容:

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

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

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

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

grep語法

grep [options] 'expression' text

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

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

文本表示標(biāo)準(zhǔn)輸入,可以是文件、多個文件或其他命令的輸出。

我在一個名為 movies 的文件中準(zhǔn)備了電影列表.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 與正則表達(dá)式一起使用

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

grep '^The' movies.txt

輸出:

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

示例 2:搜索 2000 年之后發(fā)行的電影:

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

輸出:

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

什么是 egrep?

如前所述,是另一個允許使用擴展正則表達(dá)式的命令。讓我們看一個例子:查找?guī)в小敖谈浮被颉昂诎怠币辉~的電影

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

grep -E 'Godfather|Dark' movies.txt

輸出:

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

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

egrep 'Godfather|Dark' movies.txt

忽略區(qū)分大小寫

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

grep -i 'Godfather' movies.txt

輸出:

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

搜索完整單詞

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

grep 'God' movies.txt

輸出:

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

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

grep -w 'God' movies.txt

輸出:

僅返回匹配的單詞

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

grep -o 'Godfather' movies.txt

輸出:

反向搜索

反轉(zhuǎn)搜索返回除“表達(dá)式”之外的所有內(nèi)容。這與正常搜索相反。

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

grep -v 'God' movies.txt

輸出:

我們可以看到所有沒有“上帝”一詞的電影。然而,我們?nèi)匀辉谀抢锟吹健敖谈浮薄_@是因為我們在搜索詞中沒有忽略區(qū)分大小寫。我們可以將 -i 選項與 -v 結(jié)合使用,如下所示:

grep -iv 'God' movies.txt

輸出:

返回帶有行號的結(jié)果

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

grep -n 'Angry Men' movies.txt

輸出:

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

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

vim +7 movies.txt

它將直接帶您到第 7 行。

計算匹配字?jǐn)?shù)

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

grep -c 'God' movies.txt

輸出:

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

grep -ic 'god' movies.txt

輸出:

返回完全匹配(全行)

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

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

僅當(dāng)整行與搜索的詞匹配時,它才會匹配:

返回具有搜索詞的文件名

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

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

或:

grep -l 'Godfather' ./*

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

輸出:

./grep.sh
./movies.txt

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

grep -lr 'Godfather' ./grep

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

輸出:

返回文件名和匹配的行

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

我們使用 -H 選項:

grep -Hr 'Godfather' ./grep

輸出:

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

比賽結(jié)束后返回其他行

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

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

grep -A2 'Dark Knight' movies.txt

輸出:

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

賽前返回線

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

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

grep -B2 'Dark Knight' movies.txt

輸出:

賽前和賽后的回程線

這結(jié)合了 -A 和 -B 選項。我們使用 -C 來實現(xiàn)這一點。

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

grep -C2 'Dark Knight' movies.txt

輸出:

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

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

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

僅列出目錄:

ls -l | grep '^d'

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

輸出:

結(jié)論

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

責(zé)任編輯:趙寧寧 來源: 微技術(shù)之家
相關(guān)推薦

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命令

2019-09-16 19:00:48

Linux變量

2023-01-31 17:36:22

IPLinux網(wǎng)絡(luò)

2022-05-25 08:41:48

Linuxfd 命令文件

2018-04-28 09:12:42

Linux

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命令升級軟件

2018-01-09 09:00:01

Linux命令文件壓縮

2023-01-09 10:29:41

mv命令Linux

2018-10-09 08:30:55

UbuntuLinuxRAR文件

2019-09-29 09:40:20

LinuxWindowsMacOS

2023-02-28 22:26:33

點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 国产一级在线 | 色资源av| 日本特黄a级高清免费大片 成年人黄色小视频 | 激情久久网 | 成人影视网址 | 影音先锋男 | 亚洲精品在线免费 | 91中文字幕在线观看 | 免费av手机在线观看 | 欧美极品在线视频 | 日韩一区不卡 | 精品熟人一区二区三区四区 | 欧美中文字幕一区二区三区 | 乳色吐息在线观看 | 中文字幕免费视频 | 国产大毛片 | 黄色三级免费 | 9久久婷婷国产综合精品性色 | 精品视频在线观看 | 午夜精品久久久久久久久久久久 | 九九激情视频 | a在线观看| 亚洲精品免费视频 | 国产日韩一区二区 | www.亚洲精品 | 精品在线一区二区 | 91av在线视频观看 | 亚洲欧美日韩一区二区 | 国产精品久久久久久高潮 | 成人午夜激情 | 成人欧美一区二区三区在线播放 | 免费网站国产 | 精品国产乱码久久久久久老虎 | 日韩在线视频免费观看 | 国产精品久久久久久久久久免费看 | 在线三级电影 | japanhd美女动| 日本久久久久久久久 | 成年人网站免费视频 | 草草草草视频 | 中文字幕亚洲视频 |