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

在 Linux 中怎樣進行 grep 搜索呢?通過例子來學(xué)習(xí)幾個常用的方法

系統(tǒng) Linux
grep 是一個功能強大的 unix 命令,可以在文件內(nèi)容中搜索各種參數(shù)。本文會舉例說明一些最常見的 grep 命令,介紹其常見選項及用法。

grep 是一個功能強大的 unix 命令,可以在文件內(nèi)容中搜索各種參數(shù)。在各種故障排除或調(diào)試中特別有用。

grep 有很多選項和使用場景,你應(yīng)該不會全部都用得到,不過,其中有幾個 grep 命令還是經(jīng)常會用到的。

本文會舉例說明一些最常見的 grep 命令,介紹其常見選項及用法。

如下表列出了一些常見的選項及其說明:

選項

例子

說明

i

grep -i pattern file

不區(qū)分大小寫的搜索

A

grep -A n pattern file

顯示搜索的后幾行

B

grep -B n pattern file

顯示搜索的前幾行

C

grep -C n pattern file

顯示搜索的前幾行和后幾行

v

grep -v pattern file

顯示不匹配的行

c

grep -c pattern file

計算匹配的行數(shù)

l

grep -l pattern file

只顯示搜索到的文件名稱

w

grep -w pattern file

全字匹配

e

grep -e regex file

匹配正則表達式

a

grep -a pattern file

在二進制文件中搜索

r

grep -r pattern dir

遞歸搜索目錄

grep 命令實例

你可能已經(jīng)知道,要搜索文件中特定的文本或表達式,可以這樣使用grep:

grep search_pattern filename

現(xiàn)在我們看看幾個常見的例子

不區(qū)分大小寫的搜索

默認情況下,grep 是區(qū)分大小寫的。你可以使用 -i 選項來讓其不區(qū)分大小寫:

grep -i search_pattern filename

顯示匹配文本的前后行

默認情況下,你只會看到匹配文本的當前行。但是,當你在排除故障的時候,看一下匹配行的前一行,或者后一行,也會有幫助。

你可以使用 -A 來顯示匹配行之后的行。記住,A代表之后(After)。

下面的命令將顯示匹配的行以及匹配后的5行:

grep -A 5 search_pattern filename

類似地,你可以使用 -B 選項在匹配的行之前顯示行。記住,B代表之前(Before)。

下面的命令將在匹配行之前顯示5行以及匹配行:

grep -B 5 search_pattern filename

我最喜歡的是選項 -C,因為它顯示了匹配行之前和之后的行。C 代表圓(Circle)。

下面的命令將顯示匹配行之前的5行、匹配行和匹配行之后的5行:

grep -C 5 search_pattern filename

顯示不匹配的行

你可以使用 grep 顯示與給定表達式不匹配的所有行。此“反向匹配”使用 -v 選項:

grep -v search_pattern filename

你可以將 -i-v 一起使用。

計算匹配行的數(shù)量

使用 -c 選項,可以不顯示匹配的行,只顯示與給定表達式匹配的行的數(shù)量。注意,這里的 c 是小寫的 c。

grep -c search_pattern filename

你可以將 -c -v 選項一起用來查看與給定表達式不匹配的行數(shù)。當然,也可以結(jié)合使用不區(qū)分大小寫的 -i 選項。

顯示匹配行的行號

要顯示匹配行的行號,可以使用 -n 選項。

grep -n search_pattern filename

顯示行號也可以使用 -v 來進行反向搜索。

在多個文件中搜索

可以給出多個文件進行 grep 搜索:

grep search_pattern file1 file2

這樣搜索是可以的。但平時更實用也更常用的,是搜索特定類型的文件,比如只搜索shell腳本(以 .sh 結(jié)尾的文件),可以這樣使用 grep 命令:

grep search_pattern *.sh

遞歸搜索目錄中的所有文件

你可以使用 -r 選項執(zhí)行遞歸搜索,它會在當前目錄以及子目錄的所有文件中搜索給定的表達式:

grep -r search_pattern directory_path

僅顯示文件名

默認情況下,grep 顯示匹配的行。如果你已經(jīng)在多個文件上運行了搜索,并且只想查看哪些文件包含字符串,那么可以使用 -l 選項。

grep -l search_pattern files_pattern

比如你要在所有.md文件中搜索單詞 "handbook",可以這樣:

grep -l handbook *.md

全字符匹配(搜索完整單詞)

默認情況下,grep 將顯示包含給定字符串的任何行。你可能并不總是想要這樣,比如你正在搜索“done”一詞,它的結(jié)果還會顯示包含“doner”或“abandoned”的行。

要使用全字符匹配 ,可以使用 -w 選項:

grep -w search_string file

這樣,搜索單詞 "done" 的時候,就只顯示包含 "done" 的行,而不會顯示包含 "doner" 或 "abandoned" 的行。

按正則表達式搜索

你可以使用正則表達式來搜索,選項 -e 可以允許使用正則表達式,另外一個選項 -E 允許使用擴展的正則表達式。

grep -e regex_pattern file

使用 "或運算符" |

你可以在同一個 grep 搜索中使用多個表達式,如果要搜索包含“表達式1”,或者“表達式2”的行,可以使用“或(OR)" 運算符 |,但是需要添加反斜線進行轉(zhuǎn)義:

grep 'pattern1\|pattern' filename

AND運算符沒有特定選項。為此,你可以多次使用 grep 和管道重定向。

搜索二進制文件

默認情況下,grep 會忽略二進制文件。你可以使用 -a 選項使其在二進制文件中搜索,就像它是文本文件一樣:

grep -a pattern binary_file
責任編輯:龐桂玉 來源: TIAP
相關(guān)推薦

2021-11-29 06:44:28

StreamJava8代碼

2013-11-13 13:55:16

Linux命令grep

2011-09-02 10:45:29

網(wǎng)速測試網(wǎng)速測試方法

2015-07-14 10:13:29

2011-04-07 09:33:22

2022-11-09 11:17:24

tee命令

2020-07-13 08:18:58

跨庫查詢MySQL數(shù)據(jù)庫

2010-10-13 09:45:50

Linux監(jiān)控腳本

2018-04-26 09:03:48

ApacheWeb服務(wù)器

2017-03-17 14:35:38

2023-04-20 13:59:01

Pythonwhile循環(huán)的

2022-11-09 19:02:10

Linux

2013-12-13 15:54:32

Lua腳本語言

2021-07-15 10:01:31

Vector搜索向量

2021-10-11 08:58:33

Vector類搜索方法

2021-08-02 08:20:23

AIOps網(wǎng)絡(luò)管理人工智能

2019-09-24 19:00:41

Linuxrm命令unlink命令

2013-12-12 17:30:03

Lua例子

2017-06-01 15:30:32

LinuxVim文件加密

2023-10-31 08:23:54

網(wǎng)絡(luò)命令Linux
點贊
收藏

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