首頁 運維 linux運維 shell程式設計--grep指令如何用?

shell程式設計--grep指令如何用?

Jun 20, 2017 am 11:12 AM
grep shell 使用 命令 程式設計

大家在學習正規表示式之前,首先要明確一點,並且把它牢牢記在心裡,那就是:

在linux中,通配符是由shell解釋的,而正規表示式則是由指令解釋的,不要把二者搞混了。切記! ! !

通常有三種文字處理工具/指令:grep、sed、awk,它們三者都可以解釋正規。下面我就為大家介紹grep指令的使用方法。

 

#一、使用grep指令搜尋檔案中的內容

grep和egrep指令能夠在一個或多個檔案的內容中搜尋某一特定的字元模式,也稱為正規表示式(regular expressions)。 一個模式可以是一個單一的字元、一個字串、一個單字或一個句子。

一個正規表示式是描述一組字串的一個模式。正規表示式的構成是模仿了數學表達式,透過使用操作符將較小的表達式組合成一個新的表達式。一個正規表示式既可以是一些純文字文字,也可以是用來產生模式的一些特殊字元。為了進一步定義一個搜尋模式,grep指令支援以下幾種正規表示式的元字符,也稱為通配符。

ps:正規表示式語言由兩種基本字元類型組成:原義(正常)文字字元和元字元。元字元使正規表示式具有處理能力。所謂元字符就是指那些在正規表示式中具有特殊意義的專用字符,可以用來規定其前導字符(即位於元字符前面的字符)在目標對像中的出現模式。

c*:將符合0個或多個字元c

#.:將符合任何一個且只能是一個字元(換行符除外)

[xyz]:將匹配方括號中的任一個字元

[^xyz]:將匹配不包括方括號中的字元的所有字元

^:鎖定行的開頭

$:鎖定行的結尾

#在基本正規表示式中,如元字元*、+、{}、|、和()已經失去了它們原來的意義,如果要回复他們原本的含義要在之前冠以反斜線\ ,如\*、\+等。

grep指令是用來在每個檔案或標準輸出上搜尋特定的模式。當使用grep指令時,包含一個指定字元模式的每一行都會被印在螢幕上,grep指令的語法格式如下:

##grep 選項模式檔名

其中,選項可以改變grep指令的搜尋方式,除了-w選項外,其他的每個選項都可以在egrep和fgrep指令中使用。 grep指令常用選項如下:

-c(count):只列出包含模式的行數

-i(ignore):忽略模式中字母大小寫

-l(list):列出帶有匹配行的檔案名稱

-n:在匹配行的前面列出行號

-v:列出沒有符合模式的行(取反)

-w:把表達式當做一個完整的單字來搜索,忽略那些部分匹配的行

-q  :靜默模式,沒有任何輸出,得用$?來判斷執行成功沒有,即有沒有過濾到想要的內容

-A n  :如果符合成功,則將符合行及其後n行一起列印出來

## -B n  :如果匹配成功,則將匹配行及其前n行一起打印出來

#-C n  :如果匹配成功,則將匹配行及其前後n行一起印出來

ps:如果搜尋的是多個文件,grep指令的結果只顯示在文件中發現匹配模式的文件名;

      如果搜尋的是單一文件,grep指令的結果會顯示每一個包含符合模式的行。

 

上面就是grep指令的基本使用方法。但有時一個簡單的正規表示式無法定位你要搜尋的內容,如要搜尋同時滿足模式一和模式二的資料行,這時egrep指令就可以派上用場。

egrep指令的語法格式和grep指令相同。但是egrep指令是用來在一個或多個檔案的內容中利用擴充的正規表示式的元字元搜尋特定的模式。擴展的正則表達式的元字符包含了grep命令中使用的正則表達式元字符的同時,還增加了一些額外的元字符,大致有下面幾個:

+:符合一個或多個前導字元

a|b:符合a或b

(RE):符合括號中的正規表示式RE

 

下面我將透過一些基本的範例來增進大家對grep和egrep指令用法的了解。鑑於grep指令中所有的選項egrep都能夠使用(egrep更加強大),為方便起見我將使用egrep指令為大家示範:

例一:顯示出檔案/etc/ passwd含有root的行

例二:輸出/etc /passwd中任何包含bash的所有行,還要輸出緊接著這行的上下各兩行的內容

 

範例三:顯示/etc/passwd中有多少行含有nologin

## 

例四:顯示出/etc/passwd中那些行含有root,並將行號一塊輸出

 

 

##新用戶abominable、a​​bominate、anomie、 atomize,寫正規表示式,將他們配對出來

 

 

##範例六:新用戶Alex213sb、Wpq2222b、yH438PIG、egon666、egon

濾出使用者名稱組成是字母+數字+字母的行

範例七:顯示出/etc目錄下所有包含root的檔案名稱

#### ############## #################### ############例如八:過濾掉/etc/ssh/sshd_config內所有註解與所有空白行####### ##################### #############以上範例只是很小的一部分,大家只要勤加練習,一定很快就能掌握grep指令的使用啦^^############ #######

以上是shell程式設計--grep指令如何用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1654
14
CakePHP 教程
1413
52
Laravel 教程
1306
25
PHP教程
1252
29
C# 教程
1225
24
BTCC教學:如何在BTCC交易所綁定使用MetaMask錢包? BTCC教學:如何在BTCC交易所綁定使用MetaMask錢包? Apr 26, 2024 am 09:40 AM

MetaMask(中文也叫小狐狸錢包)是一款免費的、廣受好評的加密錢包軟體。目前,BTCC已支援綁定MetaMask錢包,綁定後可使用MetaMask錢包進行快速登錄,儲值、買幣等,且首次綁定還可獲得20USDT體驗金。在BTCCMetaMask錢包教學中,我們將詳細介紹如何註冊和使用MetaMask,以及如何在BTCC綁定並使用小狐狸錢包。 MetaMask錢包是什麼? MetaMask小狐狸錢包擁有超過3,000萬用戶,是當今最受歡迎的加密貨幣錢包之一。它可免費使用,可作為擴充功能安裝在網絡

win11小元件怎麼刪除? 一條指令卸載 Windows11小元件功能技巧 win11小元件怎麼刪除? 一條指令卸載 Windows11小元件功能技巧 Apr 11, 2024 pm 05:19 PM

小組件是Win11系統的新增功能,預設是開啟狀態,但是難免會出現有部分用戶不太使用到小組件,看著佔位置,因此想要禁用小組件的情況,那麼應該如何操作呢?下面小編就教大家操作方法,大家可以去試試看。什麼是小組件?小元件是小卡片,用於在Windows桌面上顯示你最喜愛的應用程式和服務中的動態內容。它們顯示在小組件板上,你可以在其中發現、固定、取消固定、排列、調整大小和自訂小組件以反映你的興趣。小組件板經過最佳化,可根據使用情況顯示相關小組件和個人化內容。從工作列的左角開啟小組件板,可在其中看到即時天氣

使用正規表示式去除 PHP 數組中的重複值 使用正規表示式去除 PHP 數組中的重複值 Apr 26, 2024 pm 04:33 PM

使用正規表示式從PHP數組中移除重複值的方法:使用正規表示式/(.*)(.+)/i匹配並取代重複項。遍歷數組元素,使用preg_match檢查匹配情況。如果匹配,請跳過值;否則,將其添加到無重複值的新數組中。

PHP 函數和 Shell 函數的差別 PHP 函數和 Shell 函數的差別 Apr 24, 2024 pm 06:39 PM

PHP函數和Shell函數的主要區別在於安全性(PHP函數更安全)、可靠性(Shell函數因作業系統而異)、功能(Shell函數更強大但受shell限制)、效能(PHP函數通常更快)和複雜性(Shell函數更複雜)。它們都用於檔案系統、進程和命令操作,但PHP函數是內建的,而Shell函數透過外部shell呼叫。因此,在伺服器檔案下載場景中,file_put_contents()函數更安全,而wget指令更靈活。

什麼是Bitget Launchpool?如何使用Bitget Launchpool? 什麼是Bitget Launchpool?如何使用Bitget Launchpool? Jun 07, 2024 pm 12:06 PM

BitgetLaunchpool是一個為所有加密貨幣愛好者而設計的動態平台。 BitgetLaunchpool以其獨特的產品脫穎而出。在這裡,您可以質押您的代幣來解鎖更多獎勵,包括空投、高額回報,以及專屬早期參與者的豐厚獎金池。什麼是BitgetLaunchpool? BitgetLaunchpool是一個加密貨幣平台,可以透過使用者友善的條款和條件來質押和賺取代幣。透過在Launchpool中投入BGB或其他代幣,用戶有機會獲得免費空投、收益和參與豐厚的獎金池。質押資產的收益在T+1小時內計算,獎勵按

程式設計是乾啥的,學了有什麼用 程式設計是乾啥的,學了有什麼用 Apr 28, 2024 pm 01:34 PM

1、程式設計可用於開發各種軟體和應用程序,包括網站、手機應用程式、遊戲和數據分析工具等。它的應用領域非常廣泛,幾乎涵蓋了所有行業,包括科學研究、醫療保健、金融、教育、娛樂等。 2.學習程式設計可以幫助我們提升問題解決能力和邏輯思考能力。在程式設計過程中,我們需要分析和理解問題,找出解決方案,並將其轉換為程式碼。這種思維方式能夠培養我們的分析和抽象能力,提升我們解決實際問題的能力。

使用 Python 解決問題:作為初學者,解鎖強大的解決方案 使用 Python 解決問題:作為初學者,解鎖強大的解決方案 Oct 11, 2024 pm 08:58 PM

Python 讓初學者能夠解決問題。

釋放你內心的程式設計師:C 絕對初學者 釋放你內心的程式設計師:C 絕對初學者 Oct 11, 2024 pm 03:50 PM

C語言是初學者學習程式設計的理想選擇,其優點包括效率、多功能性和可移植性。學習C語言需要:安裝C編譯器(如MinGW或Cygwin)了解變數、資料型別、條件語句和迴圈語句編寫包含主函數和printf()函數的第一個程式透過實戰案例(如計算平均數)練習C語言知識

See all articles