當前位置:首頁 » 編程軟體 » shell腳本grep

shell腳本grep

發布時間: 2023-08-29 17:30:02

linux下怎樣在一個文件裡面查找一個字元串

概述

1、在終端使用grep命令查找

2、用vim編輯文件查找

步驟詳解

一、使用grep命令查找

格式:

grep 「要查找的字元串」 文件名

例子:

grep 「www.tycode.com」 test.txt

文件名可以使用基本正則表達式(BRE),例如, 查找test目錄下的所有文件,包含www.tycode.com字元串的文件以及該字元串在第幾行。

grep -n「www.tycode.com」 /root/zzh/test/*

拓展內容

linux grep命令

Linux系統中grep命令是一種強大的文本搜索工具,它能使用正則表達式搜索文本,並把匹配的行列印出來。grep全稱是GlobalRegularExpressionPrint,表示全局正則表達式版本,它的使用許可權是所有用戶。

grep的工作方式是這樣的,它在一個或多個文件中搜索字元串模板。如果模板包括空格,則必須被引用,模板後的所有字元串被看作文件名。搜索的結果被送到標准輸出,不影響原文件內容。

grep可用於shell腳本,因為grep通過返回一個狀態值來說明搜索的狀態,如果模板搜索成功,則返回0,如果搜索不成功,則返回1,如果搜索的文件不存在,則返回2。我們利用這些返回值就可進行一些自動化的文本處理工作。

1.命令格式:

grep[option]patternfile

2.命令功能:

用於過濾/搜索的特定字元。可使用正則表達式能多種命令配合使用,使用上十分靈活。

② Linux Shell腳本的執行過程

用戶登錄時,將會取得一個 bash ,這個 bash 在系統中有一個全局唯一的ID,也就是進程的ID,使用命令 ps -ef 並配合 grep 來查看進程ID。 ps -ef|grep bash ,此命令還能查看進程對應的父進程ID,系統中所有進程的祖先進程都是INIT進程(進程ID=1),它是最先啟動運行的。
回到 bash 進程,也就是我們的命令行界面,進程的執行都有其附屬的執行環境,環境變數就屬於其中之一。並且環境變數是可以完全被子進程繼承的,也就是說,子進程可以使用父進程的環境變數,但是不能使用父進程的自定義變數。
簡而言之: 子進程繼承父進程的環境變數,不繼承父進程的自定義變數。

shell腳本有4種執行方式,不同的執行方式可能導致結果不一致

四種方式的執行結果如下:

③ Linux 中 Grep 命令的常見示例,很全面

Grep 是一個強大的 UNIX 命令,可讓您在文件內容中搜索各種參數。當您進行故障排除或調試時,它特別有用。

grep 命令有大量的選項和用例。您可能永遠不需要或使用所有這些。但是,您最終會在大多數情況下使用少數幾個 grep 命令。

本文列出了最常見的 grep 命令和快速示例:

命令示例:

描述 :不區分大小寫的搜索

命令示例:

描述 :匹配後顯示 n 行

命令示例:

描述 :在匹配前顯示 n 行

命令示例:

描述 :在匹配前後顯示 n 行

命令示例:

描述 :顯示不匹配的行

命令示例:

描述 :計算匹配行數

命令示例:

描述 :僅顯示文件名

命令示例:

描述 :匹配確切的單詞

命令示例:

描述 :匹配正則表達式模式

命令示例:

描述 :搜索二進制文件

命令示例:

描述 :遞歸搜索目錄

您可能已經知道要在文件中搜索特定文本或模式,您必須像這樣使用 grep:

讓我們看看 grep 命令的幾個常見用例。

默認情況下,使用 grep 進行的搜索區分大小寫,-i您可以使用以下選項忽略大小寫匹配:

這樣,grep 將返回與 和 匹配的Holmes行holmes。

默認情況下,您只會看到匹配的行,但是,當您對某些問題進行故障排除時,在匹配行之前和/或之後查看幾行會有所幫助。

您可以使用-A來顯示匹配行之後的行。

下面的命令將顯示匹配的行以及匹配後的 5 行。

同樣,您可以使用該-B選項在匹配行之前顯示行。

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

我最喜歡的是該選項-C,因為它顯示了匹配行之前和之後的行。

下面的命令將顯示匹配行之前的 5 行、匹配行和 matchine 行之後的 5 行。

您可以使用 grep 顯示與給定模式不匹配的所有行。此「反轉匹配」與以下-v選項一起使用:

您可以組合-i和-v選項。

-c您可以使用選項獲取與模式匹配的行數,而不是顯示匹配的行。這是小寫的c。

您可以結合-cand-v選項來獲取與給定模式不匹配的行數。您當然可以使用不區分大小寫的選項-i。

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

您可以對反向搜索執行相同的操作。

您可以提供多個文件供 grep 搜索。

這可能有效,但更實際的示例是搜索特定類型的文件。例如,如果您只想在 shell 腳本中查找字元串(以 .sh 結尾的文件),您可以使用:

您可以使用 grep option執行遞歸搜索-r。它將在當前目錄及其子目錄中的所有文件中搜索給定的模式。

默認情況下,grep 顯示匹配的行。如果您對多個文件運行了搜索,並且只想查看哪些文件包含該字元串,則可以使用該-l選項。

假設您想查看哪些 Markdown 文件包含「手冊」一詞,您可以使用:

默認情況下,grep 將顯示包含給定字元串的所有行。你可能並不總是想要那個。如果您正在搜索單詞「done」,它還會顯示包含「doner」或「abandoned」字樣的行。

要使 grep 僅搜索完整的單詞,您可以使用以下選項-w:

這樣,如果您搜索單詞「done」,它只會顯示包含「done」的行,而不是「doner」或「abandoned」。

您可以使用正則表達式模式為您的搜索提供超級動力。有一個允許使用正則表達式模式的專用選項-e和-E一個允許使用擴展正則表達式模式的選項。

您可以在同一個 grep 搜索中搜索多個模式。如果要查看包含一種模式或另一種模式的行,可以使用 OR 運算符|。

您可以將多個模式與 OR 運算符一起使用。

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

Grep 默認忽略二進制文件。-a您可以使用該選項使其在二進制文件中搜索,就好像它是文本文件一樣。

④ Linux使用之grep,shell腳本(一)

在使用Linux的過程中,場景有時候便會涉及到查找文本文件的內容,假如現在我們想要在一個三百多行的文本中找到特定的語句,或者在這其中查找是否含有特定的欄位應該怎麼辦呢?
這里便出現了專門的文本處理工具——grep,grep是Linux中常用的文本處理工具之一。
grep的全稱為「 Global search Regular Expression and Print out the line」。
全稱中的「Glibal search」意思為全局搜索的意思。
全稱中的「Regular Expression」意思為正則表達式。
所以從全稱中就可以理解為gerp是一個可以利用正則表達式的全型激局搜索工具。grep會按照正則表達式的匹配原則在文本文件中按照逐行匹配處理的方法來處理文本並輸出。
來看看grep的用法。

來看看案例。
案例1.統計出/etc/passwd文件中其默認shell為非/sbin/nologin的用戶個數,並將用戶都顯示出來

上面的案例開始匹配了/sbin/nologin關鍵詞,但是案例中只需要除了它之外的shell,所以講它使用-v選項排除開就可以了。

案例2.查出用戶UID最大值的用戶卜森襪名、UID及shell類型

案例3.統計當前連接本機的每個遠程主機IP的連接數,並按從大到小排序

上面的案例中ss -nt 查看連接情況,然春頌後將EATAB狀態的過濾出來,在進行處理,最後提取出結果並完成排序。

案例4:編寫腳本disk.sh,顯示當前硬碟分區中空間利用率最大的值

案例5.編寫腳本 systeminfo.sh,顯示當前主機系統信息,包括:主機名,IPv4地址,操作系統版本,內核版本,CPU型號,內存大小,硬碟大小

熱點內容
電腦哪些配置功耗高 發布:2024-11-20 13:21:28 瀏覽:352
加密軟體安裝 發布:2024-11-20 13:21:16 瀏覽:176
android藍牙播放 發布:2024-11-20 13:11:54 瀏覽:237
網易我的世界domcer伺服器激活碼 發布:2024-11-20 12:58:35 瀏覽:467
linux版本歷史 發布:2024-11-20 12:41:12 瀏覽:947
win10安裝linux雙系統 發布:2024-11-20 12:39:53 瀏覽:46
我的世界求伺服器ip 發布:2024-11-20 12:27:22 瀏覽:360
序列匹配的演算法 發布:2024-11-20 12:23:27 瀏覽:190
電腦版如何加入手機版伺服器 發布:2024-11-20 12:22:53 瀏覽:62
源碼超 發布:2024-11-20 12:22:49 瀏覽:630