SHELL程式設計四劍客之Grep工具

2021-10-02 09:31:19 字數 2546 閱讀 1210

全域性搜尋正規表示式(global search regular expression(re) ,grep)是一種強大的文字搜尋工具,它能使用正規表示式搜尋文字,並把匹配的行列印出來。

我們可能看到別人不光使用grep,還有egrep、fgrep等擴充套件工具,目前linux作業系統預設都是使用gnu版本的grep,它功能更加強大,它支援用-e或-f引數去使用egrep或fgrep。所以這裡我們主要講解grep工具。

grep使用格式:

grep     -

[引數]

'匹配內容' filename

grep常用引數詳解如下:

-a 						以文字檔案方式搜尋;

-c 計算找到的符合行的次數;

-i 忽略大小寫;

-n 順便輸出行號;

-v 反向選擇,即顯示不包含匹配文字的所有行;

-h 查詢多檔案時不顯示檔名;

-l 查詢多檔案時只輸出包含匹配字元的檔名;

-s 不顯示不存在或無匹配文字的錯誤資訊;

-e 允許使用egrep擴充套件模式匹配。

易誤點:

學習grep時,需要了解萬用字元、正規表示式兩個概念,很多讀者容易把彼此搞混淆,萬用字元

主要用在linux的shell命令中,常用於檔案或者檔名稱的操作,而正規表示式用於文字內容中

的字串搜尋和替換,常用在awk、grep、sed、vim工具中對文字的操作。

萬用字元型別詳解:

*

0個或者多個字元、數字;

? 匹配任意乙個字元;

# 表示註解;

| 管道符號;

; 多個命令連續執行;

& 後台執行指令;

! 邏輯運算非;

內容範圍,匹配括號中內容;

命令塊,多個命令匹配。

正規表示式詳解:

*						前乙個字元匹配0次或多次;

. 匹配除了換行符以外任意乙個字元;

.* 代表任意字元;

^ 匹配行首,即以某個字元開頭;

$ 匹配行尾,即以某個字元結尾;(.

.) 標記匹配字元;

匹配中括號裡的任意指定字元,但只匹配乙個字元;[^

] 匹配除中括號以外的任意乙個字元;

\ 轉義符,取消特殊含義;

\< 錨定單詞的開始;

\> 錨定單詞的結束;

匹配字元出現n次;

匹配字元出現大於等於n次;

匹配字元至少出現n次,最多出現m次;

\w 匹配文字和數字字元,不匹配符號;

\w \w的反置形式,匹配乙個或多個非單詞字元,匹配符號;

\b 單詞鎖定符;

\s 匹配任何空白字元;

\d 匹配乙個數字字元,等價於[0-

9]。//sed工具的正則與grep工具的正則有2個不一樣,是{}和(),sed中應該是\和\(..\) .

grep實戰演練:

grep  -c "test" 	     haha.txt	 統計test字元總行數;

grep -i "test" haha.txt 不區分大小寫查詢test所有的行;

grep -n "test" haha.txt 列印test的行及行號;

grep -v "test" haha.txt 不列印test的行;

grep "test[53]" haha.txt 以字元test開頭,接5或者3的行;

grep "^[^test]" haha.txt 顯示輸出行首不是test的行;

grep "[mm]ay" haha.txt 匹配m或m開頭的行;

grep "k…d" haha.txt 匹配k,三個任意字元,緊接d的行;

grep "[a-z][9]d" haha.txt 匹配大寫字母,緊跟9d的字元行;

grep "t" haha.txt 列印字元t字元連續出現2次以上的行;

grep "t" haha.txt 列印字元t字元連續出現4次及6次的行;

grep -n "^$" haha.txt 列印空行的所在的行號;

grep -ve "#|^$" haha.txt 不匹配檔案中的#和空行;

grep --color -ra -e "db|config|sql"

* 匹配包含db或者config或者sql的檔案;

echo 192.168

.2.1

|egrep "^([0-9]\.)([0-9])$" 匹配ipv4位址。

Shell程式設計四劍客之GREP

全面搜尋正規表示式 global search regular expression re grep 是一種強大的文字搜尋工具,它能使用正規表示式搜尋文字,並把匹配的行列印出來。unix linux的grep家族包括grep egrep和fgrep,其中egrep和fgrep的命令跟grep有細微的...

linux四劍客之grep

1 grep linux系統中grep命令是一種強大的文字搜尋工具,它能使用正規表示式搜尋文字,並把匹 配的行列印出來。grep全稱是global regular expression print,表示全域性正規表示式版本,它的使用許可權是所有使用者。linux三劍客老三過濾需要的內容,v排除內容,...

Shell程式設計四劍客之AWK

awk是乙個優良的文字處理工具,linux 及unix 環境中現有的功能最強大的資料處理引擎之一,以aho weinberger kernighan三位發明者名字首字母命名為awk,awk是乙個行級文字高效處理工具,awk經過改進生成的新的版本有nawk gawk,一般linux預設為gawk,ga...