正則表達式(Regular Expression)就是使用簡單的字符按照預先設定的規則來完成復雜的功能,說白了,正則表達式是一種字符串的匹配方式,就是用預先設定好的規則來描述我們想要表達的內容,它是由普通字符以及元字符組成的字符串,其中元字符不表示本身的意義,而是用于表達控制或通配等功能。
為什么要用這個東西那,我想,每一個學習計算機的人都應該明白,計算機就是我們用數字來描述這個現實的世界,而如何使用數字來描述這個現實世界那,就必須用到字符,正則表達式之所以無比重要就是因為可以通過它來找到我們想要的東西,我們知道,對于linux系統管理來說,最重要的工作就是通過修改配置文件來實現系統管理工作的,而面對浩瀚的配置文件,如何能找到我們想要修改的內容那,有了正則表達式,就會大大減輕我們的工作量,下面就讓我介紹一下linux文本搜索工具。
Linux下的文本搜索工具主要就三個:grep、egrep、fgrep;這三個工具主要功能就是根據用戶指定的文本模式,這個文本模式是由正則表達式元字符以及正常字符組合而成,對目標文件進行逐行搜索,然后顯示能匹配到的行。
grep命令使用方法:
grep [OPTION] PATTERN [FILE ….]
重要選項介紹:
–color:用來指定匹配內容的顏色,主要參數有:auto; always;never;
例如:grep –color=auto “root” /etc/passwd
-v :反向顯示
-o :只顯示能匹配到的內容而不顯示能匹配到這一行的其他內容
-i : 搜索時不區分大小寫
-E:使用擴展的正則表達式
-A#:被模式匹配到的行的下#行也一起顯示
-B#:被模式匹配到的行的前#行也一起顯示
-C#:被模式匹配到的行的前后#行也一起顯示
以上就是grep命令的常用常見,接下來我們詳細介紹grep搜索的模式,也就是正則表達式
-
字符匹配
. :匹配任意的單個字符
[ ] :匹配指定范圍內的任意單個字符
[[:digit:]]或[0-9]:表示0-9范圍內任意單個數字
[[:lower:]]或[a-z]表示a-z范圍內任意單個字母
[[:upper:]]或[A-Z]:表示A-Z范圍內任意單個字母
[[:alnum:]]或[0-9a-zA-Z]:表示任意大小寫字母或數字
[[:alpha:]]或[a-zA-Z]:表示任意大小寫字母
[[:space:]]表示任意空格
[^] :表示匹配制定范圍外的任意單個字符
2、次數匹配:在期望匹配字符的后面提供一個控制符,用來表達匹配其前面字符指定的次數。
* :表示任意長度,0次、1次、或多次
\? :匹配其前面的字符可以1次或0次,也就是說前面字符可有可無
\+ :1次或多次,表示左側字符至少出現一次
\{n\} :n次表示其左側字符精確出現n次
\{m,n\} :至少m次,至多n次
\{0,n\} :至多n次
\{m,0\} :至多m次
3、位置錨定
^ :用來錨定行首
$ :用來錨定行尾
4、單詞錨定:有非特殊字符組成的連續字符串
\<或\b :錨定詞首
\>或\b :錨定詞尾
\<PATTERN\> :匹配PATTERN能匹配到的整個單詞
5、分組:在分組中的模式在某次具體的匹配過程中所匹配的字符,可以被grep記憶,保存于內置的變量中,這些變量是(\1、\2、…..\9)因此還可以被用來引用,其中(\1)用來引用自左而右由第一個左括號以及與之對應的右括號中模式所匹配到的內容,其中(\2)用來引用自左而右由第二個左括號以及與之對應的右括號中模式所匹配到的內容;
例如創建一下文本文件
使用使用\1引用前一個模式總所匹配到的內容
接下來我們詳細介紹egrep搜索的模式,也就是擴展正則表達式
egrep命令使用方法:
egrep [OPTION] PATTERN [FILE ….]
1、字符匹配
. :匹配任意的單個字符
[ ] :匹配指定范圍內的任意單個字符
[[:digit:]]或[0-9]:表示0-9范圍內任意單個數字
[[:lower:]]或[a-z]:表示a-z范圍內任意單個字母
[[:upper:]]或[A-Z]:表示A-Z范圍內任意單個字母
[[:alnum:]]或[0-9a-zA-Z]:表示任意大小寫字母或數字
[[:alpha:]]或[a-zA-Z]:表示任意大小寫字母
[[:space:]]表示任意空格
[^] :表示匹配制定范圍外的任意單個字符
2、次數匹配:在期望匹配字符的后面提供一個控制符,用來表達匹配其前面字符指定的次數。
* :表示任意長度,0次、1次、或多次
? :匹配其前面的字符可以1次或0次,也就是說前面字符可有可無
+ :1次或多次,表示左側字符至少出現一次
{n} :n次表示其左側字符精確出現n次
{m,n} :至少m次,至多n次
{0,n} :至多n次
{m,0} :至多m次
3、位置錨定
^ :用來錨定行首
$ :用來錨定行尾
4、單詞錨定:有非特殊字符組成的連續字符串
\<或\b :錨定詞首
\>或\b :錨定詞尾
\<PATTERN\> :匹配PATTERN能匹配到的整個單詞
5、分組:在分組中的模式在某次具體的匹配過程中所匹配的字符,可以被grep記憶,保存于內置的變量中,這些變量是(\1、\2、…..\9)因此還可以被用來引用,其中(\1)用來引用自左而右由第一個左括號以及與之對應的右括號中模式所匹配到的內容,其中(\2)用來引用自左而右由第二個左括號以及與之對應的右括號中模式所匹配到的內容;
fgrep表示匹配的模版都被看做是字符串,因此元字符都作為普通字符來處理,使用方法類似,因此不做詳細描述。
正則表達式現在廣泛應用于Unix系統、Linux系統以及PHP、C#、Java等開發環境中,靈活的運用正則表達式可以極大的簡化日常工作,就好比每一個成為武林高手所必備的基本功,每一招每一式都需要勤加練習,這樣才能做到運用自如。
原創文章,作者:zhang,如若轉載,請注明出處:http://www.www58058.com/8930
內容很豐富,格式上有些亂失去了層次主次,不容易吸引用戶
[[:lower:]]或[a-z]:表示a-z范圍內任意單個字母 前者精確匹配小寫字母,后者不區分大小寫