自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何在 Linux 中使用 fgrep 命令搜索字符串

系統(tǒng) Linux
在本文中,我們討論了fgrep命令的一些有用示例。初學者可以在日常生活中使用這些示例來提高使用 Linux 工作時的工作效率。

文本搜索是最常執(zhí)行的操作之一。然而,如果用戶不熟悉正確的工具,這個簡單的任務很快就會變得很耗時。在 Linux 中,有各種文本過濾實用程序,例如 awk、sed、cut等。

但是,在 Linux 中,fgrep 是簡單文本搜索的首選實用程序。在本指南中,我們將討論可在日常生活中使用的 fgrep 命令的一些實踐示例。

Linux 中的 fgrep 命令屬于grep 命令家族。但是,它用于搜索固定字符串模式而不是正則表達式。因此,該命令的名稱是fgrep(Fixed GREP)。

fgrep 命令的語法類似于其他 grep 系列命令:

$ fgrep [選項] 模式 [文件]

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

┌──(linuxmi?linuxmi)-[~/www.linuxmi.com]
└─$ cat linuxmi.txt

在 Linux 中查看文件內容

在這里,我們可以看到文本文件已準備好包含示例內容?,F(xiàn)在讓我們在接下來的幾個示例中討論 fgrep 命令的一些常見示例。

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

顧名思義,fgrep 命令用于搜索固定字符串模式。它將模式解釋為固定字符串而不是正則表達式。因此,它以一種節(jié)省時間的方式執(zhí)行搜索操作。

為了理解差異,讓我們在 grep 命令中使用點(.)字符。

這個簡單的正則表達式匹配除行尾之外的任何單個字符:

┌──(linuxmi?linuxmi)-[~/www.linuxmi.com]
└─$ grep at. linuxmi.txt

使用 Grep 搜索單個字符

在上面的輸出中,我們可以看到點(.)字符與文本at、atc和att匹配。

現(xiàn)在,讓我們對 fgrep 命令使用相同的模式并觀察結果:

┌──(linuxmi?linuxmi)-[~/www.linuxmi.com]
└─$ fgrep at. linuxmi.txt

在上面的輸出中,我們可以看到該命令無法找到給定的模式。

發(fā)生這種情況是因為 fgrep 命令無法識別正則表達式并嘗試搜索不存在的模式 – “at.”。

2. 如何在文件中搜索字符串

讓我們從基本示例開始,我們將在 linuxmi.txt 文件中搜索字符串 matches:

┌──(linuxmi?linuxmi)-[~/www.linuxmi.com]
└─$ fgrep matches linuxmi.txt

在文件中搜索字符串

正如我們所看到的,成功在兩個地方匹配成功,并以紅色突出顯示。

3. 如何設置匹配模式的 Grep 輸出顏色

在前面的示例中,我們看到,默認情況下,匹配的模式以紅色突出顯示。但是,我們可以通過為 GREP_COLOR 環(huán)境變量分配不同的值來改變這種行為。

讓我們將值32分配給GREP_COLOR環(huán)境變量以高亮顯示綠色的匹配模式:

┌──(linuxmi?linuxmi)-[~/www.linuxmi.com]
└─$ export GREP_COLOR=32

┌──(linuxmi?linuxmi)-[~/www.linuxmi.com]
└─$ fgrep matches linuxmi.txt

為匹配模式設置 Grep 輸出顏色

現(xiàn)在,在轉到下一個示例之前,取消設置 GREP_COLOR 環(huán)境變量以啟用默認行為:

┌──(linuxmi?linuxmi)-[~/www.linuxmi.com]
└─$ unset GREP_COLOR

4.如何在一個文件中搜索多個模式

有時,我們需要對多個字符串進行模式匹配。在這種情況下,我們可以提供文本文件中的模式而不是命令行參數(shù)。

讓我們創(chuàng)建一個文本文件,在單獨的一行中包含多個模式:

┌──(linuxmi?linuxmi)-[~/www.linuxmi.com]
└─$ cat kotlin.txt
name
globs

現(xiàn)在,讓我們將此文件與-f多個模式匹配選項一起使用:

┌──(linuxmi?linuxmi)-[~/www.linuxmi.com]
└─$ fgrep -f kotlin.txt linuxmi.txt

使用 fgrep 搜索多個模式

在上面的輸出中,我們可以看到字符串professionals和website的模式匹配成功。

5.如何限制文件中的匹配數(shù)

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

但是,有時我們需要限制匹配的數(shù)量。在這種情況下,我們可以-m在命令中使用該選項:

┌──(linuxmi?linuxmi)-[~/www.linuxmi.com]
└─$ fgrep -m 1 file linuxmi.txt

在此示例中,fgrep命令在匹配第一個模式后停止文件處理。

6. 查找模式時如何打印文件名

有時,我們只需要找到存在特定模式的文件的名稱。在這種情況下,我們可以使用 fgrep 命令的-l選項:

┌──(linuxmi?linuxmi)-[~/www.linuxmi.com]
└─$ fgrep -l file linuxmi.txt
linuxmi.txt

在這里,我們可以看到該命令只打印文件名而不是具有匹配模式的行。

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

在前面的示例中,我們看到了如何在模式匹配成功時打印文件名。現(xiàn)在,讓我們看看如何以相反的方式執(zhí)行操作。

讓我們嘗試在文件中找到不存在的模式并觀察結果:

┌──(linuxmi?linuxmi)-[~/www.linuxmi.com]
└─$ fgrep -L non-existing-word linuxmi.txt
linuxmi.txt

在這個例子中,我們使用了-L當模式匹配不成功時打印文件名的命令選項。

8. 如何忽略錯誤信息

在編寫 shell 腳本時,錯誤處理起著至關重要的作用。但是,在一些非關鍵場景中,我們可以安全地忽略錯誤消息。

在fgrep中,我們可以使用-s 忽略與不存在或不可讀文件相關的錯誤的選項。為了更好地理解這種行為,讓我們嘗試在不存在的文件中搜索模式:

┌──(linuxmi?linuxmi)-[~/www.linuxmi.com]
└─$ fgrep -s kotlin non-linux.txt

┌──(linuxmi?linuxmi)-[~/www.linuxmi.com]
└─$ echo $? 2 ?
2

在上面的輸出中,我們可以看到該命令沒有在標準錯誤流中顯示任何錯誤。但是,失敗是由非零返回值報告的。

除此之外,我們還可以在文件不可讀時觀察到相同的行為。因此,首先,使用chmod命令修改文件權限:

┌──(linuxmi?linuxmi)-[~/www.linuxmi.com]
└─$ chmod 000 linuxmi.txt

┌──(linuxmi?linuxmi)-[~/www.linuxmi.com]
└─$ ls -l linuxmi.txt
---------- 1 linuxmi linuxmi 370 11 20 19:03 linuxmi.txt

現(xiàn)在,嘗試搜索模式并觀察結果:

┌──(linuxmi?linuxmi)-[~/www.linuxmi.com]
└─$ fgrep -s name linuxmi.txt

┌──(linuxmi?linuxmi)-[~/www.linuxmi.com]
└─$ echo $? 2 ?
2

Grep 忽略錯誤信息

責任編輯:趙寧寧 來源: Linux迷
相關推薦

2022-10-25 09:07:28

Linuxxargs命令

2021-11-25 00:04:16

C# 插值字符串

2018-06-26 09:15:24

Linux命令history

2022-11-18 10:16:26

Linuxwc 命令

2018-05-16 10:32:06

Linux命令find

2023-09-14 15:05:33

grep正則表達式

2021-01-13 09:40:26

Linuxexport命令

2023-01-31 17:36:22

IPLinux網(wǎng)絡

2021-07-13 07:52:02

Linuxgrep命令

2009-06-15 16:53:44

Groovy字符串gstring

2018-04-28 09:12:42

Linux

2021-07-20 10:00:28

Linuxgrep命令

2022-05-25 08:41:48

Linuxfd 命令文件

2022-03-30 09:32:32

BashtestLinux

2019-09-16 19:00:48

Linux變量

2018-07-26 09:55:44

Linux命令升級軟件

2018-01-09 09:00:01

Linux命令文件壓縮

2022-11-23 08:14:42

bash 腳本test 命令

2022-12-06 08:27:50

Bash腳本字符串

2020-09-07 07:35:03

Grep命令字符串
點贊
收藏

51CTO技術棧公眾號