全域性搜尋正規表示式(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...