Shell程式設計四劍客之GREP

2022-07-19 12:39:12 字數 3545 閱讀 4144

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

unix/linux的grep家族包括grep、egrep和fgrep,其中egrep和fgrep的命令跟grep有細微的區別,egrep是grep的擴充套件,支援更多的re元字元, fgrep是fixed grep或fast grep簡寫,它們把所有的字母都看作單詞,正規表示式中的元字元表示其自身的字面意義,不再有其他特殊的含義,一般使用比較少。

目前linux作業系統預設使用gnu版本的grep。它功能更強,可以通過-g、-e、-f命令列選項來使用egrep和fgrep的功能。其語法格式及常用引數詳解如下:

grep     -[acinv]    'word'     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]。

常用grep工具企業演練案列:

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

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

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

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

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

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

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

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

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

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

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

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

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

grep   --color -ra -e    "db|config|sql"  *  匹配包含db或者config或者sql的檔案;

grep   --color -e "\<([0-9]\.)([0-9])\>"    file.txt 匹配ipv4位址。

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

全域性搜尋正規表示式 global search regular expression re grep 是一種強大的文字搜尋工具,它能使用正規表示式搜尋文字,並把匹配的行列印出來。我們可能看到別人不光使用grep,還有egrep fgrep等擴充套件工具,目前linux作業系統預設都是使用gnu版本...

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...