Linux正則表達式
一,正則表達式
1,正則表達式由一堆特殊符號和字母構(gòu)成----元字符
本文引用地址:http://2s4d.com/article/202405/458943.htm一些具有特殊含義的符號:? . * + ^ $ () {}
基礎(chǔ)正則表達式
擴展正則表達式
grep
sed
awk
-v:取反
-o:僅僅顯出所匹配的內(nèi)容
-E:使用擴展
-i:忽略大小寫
grep "root" a.txt
grep -v "root" a.txt
例:從a.txt文件中過濾出僅僅顯示root的行
grep -o "root" a.txt
例:統(tǒng)計a.txt文件中有多少個root
grep -o "root" a.txt |wc -w
匹配行首: ^
匹配行尾:$
匹配單詞首部:/<
匹配單詞尾部:/>
二,正則表達式中元字符:
1)匹配單個字符
grep ".a" 11.txt
2)[ ]表示范圍內(nèi)中的一個
[123] 表示匹配1或2或3
[0-9]匹配所有的數(shù)字
[A-Z]匹配所有大寫的字母
[a-z]匹配所有小寫的字母
[a-Z]匹配所有的字母
grep [0-9] file
grep "a" file
3)用字符集的方式表達
[[:space:]]:表示一個空格
[[:digit:]]:表示任意一個數(shù)字
[[:lower:]]:表示任意一個小寫字母
[[:upper:]]:表示任意一個大寫字母
[[ :alpha: ]]:表示任意一個字母
[[ :alnum: ]]:表示任意一個字母+數(shù)字
[[:punct:]]:表示任意一個標點符號
[[:digit:][:space:]] 表示一個空格或者任意一個數(shù)字
grep [a-z] filegrep [[:lower:]] file
4) ^[ ]
grep ^[#] file
grep [^a] file
grep [^qaz] file
例:過濾出#開頭后面有一個空格的行
grep "^#[[:space:]]" 11.txt
5)顯示匹配到的行的前的若干行
-An:顯示匹配到的內(nèi)容的后n行
-Bn:顯示匹配到的內(nèi)容的前n行
-Cn:顯示匹配到的內(nèi)容的前后各n行
grep -B3 "root" file
6) 次數(shù)匹配
grep "a.*b" 11.txt
”?“表示其前面字符出現(xiàn)最多一次
a{m,n}b b前面的a至少出現(xiàn)m次,最多n次
-E a{m,n}b b前面的a至少出現(xiàn)m次,最多n次
grep -E "a{1,}b" 11.txt b前面的a至少1次最多不限
grep -E "a{1,1}b" 11.txt b前面的a1次
grep -E "a?b" 11.txt b前面的a1次
7)位置錨定
^ 表示以n為開頭的行
$ 表示以n為結(jié)尾的行
grep "yum$" file
<n 表示單詞首部
n> 表示單詞尾部
^$ 表示空白行
8)分組
將一個內(nèi)容當作一個整體看待
1 引用第一個分組的內(nèi)容
2 引用第二個分組的內(nèi)容
grep "([[:digit:]]).*1" 11.txt
i love my loverhe love his likershe like her lovershe love her liker
grep -E "(l..e).*1" 5.5xt
擴展正則表達式:
基礎(chǔ)正則:grep [選項] 匹配內(nèi)容 文件
擴展:
grep -E 匹配內(nèi)容 文件
egrep 匹配內(nèi)容
文件{1,}:其前面的字符至少出現(xiàn)過1次
+ :其前面的字符至少出現(xiàn)過1次
9)或:|
egrep "^(a|A)" 11.txtegrep "^[aA]" 11.txt
sadfa cat asfasdf Cat a asdf
grep -E "(c|C)at" 6.txtgrep -E "(cat|Cat)" 6.txt
評論