如何使用 fgrep 命令搜索文件中的文本字符串
摘要: 在這個(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)論中告訴我們您的看法。