如何使用 fgrep 命令搜索文件中的文本字符串

言鼎科技 2023-07-14 413

摘要: 在這個(gè)適合初學(xué)者的指南中,我們將討論 fgrep 命令的一些實(shí)際示例。在本指南結(jié)束時(shí),用戶將能夠使用命令行界面高效地執(zhí)行文本搜索操作。


文本搜索是最常見(jiàn)的任務(wù)之一。然而,如果用戶不熟悉適當(dāng)?shù)墓ぞ?,這個(gè)簡(jiǎn)單的任務(wù)很快就會(huì)變得耗時(shí)。在Linux中,有各種文本刪除工具,例如sed、cut等。


然而,在 Linux 中,fgrep 是簡(jiǎn)單文本檢測(cè)的首選工具。在本指南中,我們將介紹一些可在日常生活中使用的 fgrep 命令行為的示例。


Linux 中的 fgrep 命令屬于 grep 命令系列。但是,它用于查找默認(rèn)字符串格式而不是正則表達(dá)式。所以命令名稱(chēng)是fgrep(固定GREP)。


fgrep 命令與其他 grep 系列命令具有相同的語(yǔ)法:


$ fgrep [選項(xiàng)] 模式 [文件]


首先,我們創(chuàng)建一個(gè)包含以下內(nèi)容的純文本文件來(lái)使用示例:


$貓輸入.txt


在這里我們可以看到文本文件已準(zhǔn)備好包含示例內(nèi)容?,F(xiàn)在讓我們?cè)诮酉聛?lái)的幾個(gè)示例中探討 fgrep 命令的一些常見(jiàn)示例。


1. fgrep 與 grep 和 egrep 命令有何不同?

顧名思義,fgrep 命令用于搜索標(biāo)準(zhǔn)字符串參數(shù)。它將模式解釋為固定字符串而不是正則表達(dá)式。因此它以節(jié)省時(shí)間的方式進(jìn)行搜索。


為了理解差異,讓我們使用點(diǎn)(.)腳本和 grep 命令。


這個(gè)簡(jiǎn)單的正則表達(dá)式匹配除行尾之外的任何單個(gè)字符:


$ grep 哈。輸入.txt


從上面的結(jié)果中,我們可以看到點(diǎn)(.)字符對(duì)應(yīng)于拼寫(xiě) har、hat 和 has。


現(xiàn)在,讓我們使用 fgrep 命令使用相同的示例并查看輸出:


$ fgrep 哈。輸入.txt

從上面的結(jié)果中,我們可以看到該命令未能找到給定的模式。


發(fā)生這種情況是因?yàn)?fgrep 命令無(wú)法識(shí)別正則表達(dá)式并嘗試查找不存在的模式 - \ha.”。


[ 您可能還喜歡: Linux 中的 Grep、Egrep 和 Fgrep 之間有什么區(qū)別?]


2. 如何在文件中搜索模式


讓我們從基本示例開(kāi)始,在 input.txt 文件中搜索字符串 professional:


$ fgrep 專(zhuān)業(yè)人員 input.txt


正如我們所看到的,模型擬合在兩個(gè)點(diǎn)成功并標(biāo)記為紅色。


3. Alesi Nà?o Grep 輸出 Amadede Na 匹配模式

在前面的示例中,我們看到,默認(rèn)情況下,相關(guān)圖像以紅色突出顯示。但是,我們可以通過(guò)為環(huán)境變量分配附加值來(lái)更改此行為GREP_COLOR。


讓我們將值 32 分配給GREP_COLOR環(huán)境變量,以綠色突出顯示相關(guān)模型:


$ 導(dǎo)出 GREP_COLOR=32

$ fgrep 專(zhuān)業(yè)人員 input.txt


現(xiàn)在,在繼續(xù)下一個(gè)示例之前,刪除 GREP_COLOR 環(huán)境變量以啟用第一個(gè)操作:


$ 取消設(shè)置 GREP_COLOR

4. 如何搜索文件中的多個(gè)副本

有時(shí)我們需要對(duì)多個(gè)線程進(jìn)行模式匹配。在這種情況下,我們可以提供文本文件中的示例而不是命令參數(shù)。


讓我們創(chuàng)建一個(gè)文本文件,其中一行包含多個(gè)圖像:


$ 貓模式.txt


專(zhuān)業(yè)人士

網(wǎng)站

現(xiàn)在,讓我們使用此文件以及-f匹配多個(gè)模型的選項(xiàng):


$ fgrep -f 模式.txt 輸入.txt


從上面的結(jié)果可以看出,線程操作符和數(shù)據(jù)庫(kù)的模式匹配成功。


5. 如何限制文件中有效對(duì)象的數(shù)量

默認(rèn)情況下,fgrep 命令繼續(xù)執(zhí)行模式匹配,直到處理整個(gè)文件。



但有時(shí)我們需要限制球的數(shù)量。在這種情況下,我們可以將-m年份選項(xiàng)與命令一起使用:


$ fgrep -m 1 專(zhuān)業(yè)人員 input.txt


TecMint 于 2012 年 8 月 15 日由技術(shù)專(zhuān)業(yè)人士和所有

在此示例中,fgrep 命令在與第一個(gè)示例匹配后停止文件處理。


6. 搜索花樣時(shí)如何打印文件名

有時(shí)我們只需要找到包含特定模式的文件的名稱(chēng)。在這種情況下,我們可以使用-lfgrep 命令中的選項(xiàng):


$ fgrep -l 專(zhuān)業(yè)人員 input.txt


輸入.txt

在這里我們可以看到該命令只打印文件名而不是相同格式的行。


7. 模式匹配失敗時(shí)如何打印文件名

在前面的示例中,我們了解了如何在模式匹配成功時(shí)打印文件名。現(xiàn)在,讓我們看看如何反向完成這項(xiàng)工作。


讓我們嘗試找到文件中不存在的模式并查看結(jié)果:


$ fgrep -L 不存在的單詞 input.txt


輸入.txt

在此示例中,我們-L在命令中使用了在模式匹配失敗時(shí)打印文件名的選項(xiàng)。


8. 如何停止錯(cuò)誤消息

在編寫(xiě) shell 腳本時(shí),錯(cuò)誤處理起著重要作用。然而,在一些非關(guān)鍵情況下,我們可以安全地忽略錯(cuò)誤消息。


在 fgrep 中,我們可以使用-s一個(gè)選項(xiàng)來(lái)抑制與不存在或不可讀文件相關(guān)的錯(cuò)誤。為了更好地理解這種行為,讓我們嘗試在不存在的文件中找到一個(gè)示例:


$ fgrep -s 專(zhuān)業(yè)人士不存在的文件.txt

$回聲$?


2

從上面的輸出中,我們可以看到該命令在標(biāo)準(zhǔn)錯(cuò)誤流上沒(méi)有顯示任何錯(cuò)誤。但是,會(huì)以非零返回值報(bào)告失敗。


除此之外,如果文件不可讀,我們還可以觀察到相同的行為。因此,首先使用 chmod 命令編輯文件權(quán)限:


$ chmod 000 輸入.txt

$ ls -l 輸入.txt

現(xiàn)在,嘗試找到模式并查看結(jié)果:


$ fgrep -s 專(zhuān)業(yè)人員 input.txt

$回聲$?


在本文中,我們討論 fgrep 命令的一些很好的示例。初學(xué)者可以在日常生活中使用這些示例來(lái)提高使用 Linux 的性能。


您知道 Linux 中 fgrep 命令的其他最佳示例嗎?請(qǐng)?jiān)谙旅娴脑u(píng)論中告訴我們您的看法。

言鼎科技

The End