正規表示式只是字串的一種描述,只有和支援正規表示式的工具相結合才能進行字串處理。本文以grep為例來講解正規表示式。
grep [-acinv] [--color=auto] [-a n] [-b n] '搜尋字串' 檔名–color選項是個非常好的選項,可以讓你清楚的明白匹配了那些字元。最好在自己的.bashrc或者.bash_profile檔案中加入:引數說明:
-a:將二進位制文件以文字方式處理
-c:顯示匹配次數
-i:忽略大小寫差異
-n:在行首顯示行號
-a:after的意思,顯示匹配字串後n行的資料
-b:before的意思,顯示匹配字串前n行的資料
-v:顯示沒有匹配行-a:after的意思,顯示匹配部分之後n行-b:before的意思,顯示匹配部分之前n行
--color:以特定顏色高亮顯示匹配關鍵字
alias grep=grep --color=auto每次grep搜尋之後,自動高亮匹配效果了。
『搜尋字串』是正規表示式,注意為了避免shell的元字元對正規表示式的影響,請用單引號(』』)括起來,千萬不要用雙引號括起來("」)或者不括起來。
正規表示式分為基本正規表示式和擴充套件正規表示式。下面分別簡單總結一下。
正規表示式學習,主要是對正規表示式元資料的學習。正規表示式本身沒有什麼高深的東西,本文僅僅對基本正規表示式的元資料進行一下總結:
元資料意義和範例
^word
搜尋以word開頭的行。
例如:搜尋以#開頭的指令碼注釋行
grep –n 『^#』 regular.txt
word$
搜尋以word結束的行
例如,搜尋以『.』結束的行
grep –n 『.$』 regular.txt .
匹配任意乙個字元。
例如:grep –n 『e.e』 regular.txt
匹配e和e之間有任意乙個字元,可以匹配eee,eae,eve,但是不匹配ee。 \
轉義字元。
例如:搜尋』,』是乙個特殊字元,在正規表示式中有特殊含義。必須要先轉義。
grep –n 『\」 regular.txt *
前面的字元重複0到多次。
例如匹配gle,gogle,google,gooogle等等
grep –n 『go*gle』 regular.txt
[list]
匹配一系列字元中的乙個。
例如:匹配gl,gf。
grep –n 『g[lf]』 regular.txt
[n1-n2]
匹配乙個字元範圍中的乙個字元。
例如:匹配數字字元
grep –n 『[0-9]』 regular.txt
[^list]
匹配字符集以外的字元
例如:grep –n 『[^o]『 regular.txt
匹配非o字元 \
前面的字元重複n1,n2次
例如:匹配google,gooogle。
grep –n 『go\gle』 regular.txt
\單詞是的開頭。
例如:匹配以g開頭的單詞
grep –n 『\
word\>
匹配單詞結尾
例如:匹配以tion結尾的單詞
grep –n 『tion\>』 regular.txt
擴充套件正規表示式就是在基本正規表示式的基礎上,增加了一些元資料。
元資料意義和範例 +
重複前面字元1到多次。
例如:匹配god,good,goood等等字串。
grep –ne go+d』 regular.txt ?
匹配0或1次前面的字元
例如,匹配gd,god
grep –ne 『go?d』 regular.txt |
或(or)的方式匹配多個字串
例如:grep –ne 『god|good』 regular.txt
匹配god或者good。 ()
匹配整個括號內的字串,原來都是匹配單個字元
例如:搜尋good或者glad
grep –ne 『g(oo|la)』 regular.txt ()
前面的字元重複0到多次。
例如匹配gle,gogle,google,gooogle等等
grep –ne 『go*gle』 regular.txt
linux下面正規表示式博大精深,上文支援總結了最常用的部分,如果熟練掌握的上面部分的正規表示式基本上可以滿足日常使用了。
另外linux很多命令支援正規表示式,比如find,sed,awk等等。請在使用的時候參照這些命令的手冊使用正規表示式。
那麼匹配乙個ip位址的命令是什麼格式呢?:
看來如此還是有錯誤的匹配項。。。那麼應該是這樣:
此處ip的匹配應用了^,$,{},,\等表示式字元
附加資訊:
file檔案的內容:
helloworld
hello_world
hello2world
helloaworld
helloaworld
hello123world
helloacsworld
653helloworld
helloadafc
aahello
aaahello
aaxhello
1235hello
hello235
helloaxs
helloaxs
192.163.255.168
0.1.2.3
.1.2.5.3
.288.264.623.552
168.265.264.244.
192.168.5
元資料:.
符號:、{}
符號:\
正規表示式的基本知識
元字元描述 將下乙個字元標記為乙個特殊字元 或乙個原義字元 或乙個向後引用 或乙個八進位制轉義符。例如,n 匹配 n。n 匹配換行符。序列 匹配 而 則匹配 匹配輸入字串的開始位置。如果設定了regexp物件的multiline屬性,也匹配 n 或 r 之後的位置。匹配輸入字串的結束位置。如果設定了...
grep命令與基本正規表示式
grep 全域性搜尋正規表示式 grep options pattern file.options color auto 對匹配到的文字著色高亮顯示 i ignorecase,忽略字元的大小寫 o 僅顯示匹配到的字元本身 v 反向匹配 e 支援擴充套件的正規表示式元字元 q,qulet,silent...
grep與正規表示式
grep命令 功能 輸入檔案的每一行中查詢字串。基本用法 grep acinv color auto a n b n 搜尋字串 檔名 引數說明 a 將二進位制文件以文字方式處理 c 顯示匹配次數 i 忽略大小寫差異 n 在行首顯示行號 a after的意思,顯示匹配字串後n行的資料 b before...