linux模式匹配运算符,linux之正则表达式
文件查找的需要:
grep:(GLOBAL Research) 根據(jù)模式(網(wǎng))去搜索文本,而后將符合模式的文本行顯示出來。
【部分匹配,顯示時顯示一行】
Pattern:模式。(文本字符以及正則表達式元字符組合而成的匹配條件)
例子:grep‘root’/etc/passwd
grep所支持的選項:
-i:忽略大小寫
--color 顯示顏色
alias grep=’grep --color’
-v: 反向查找,顯示沒有被模式匹配的行
-o:只顯示被模式匹配出來的字符串,每個字符串顯示為一行。
回顧一下 globbing(文件名通配)
* :任意長度任意字符
?:任意單個字符
[]:指定范圍內(nèi)的
[^]:指定范圍之外的
如何寫模式pattern?
正則表達式 Regular EXPression;REGEXP
元字符:
.:用點表示任意單個字符
grep‘r..t’/etc/passwd
[] :匹配指定范圍內(nèi)的任意單個字符
[^]:匹配執(zhí)行范圍之外的任意單個字符
字符集合:[:digit:] ?[:space::] ?[::upper::] ?[:lower:] ?[:alpha:] ?[:alnum:]
匹配次數(shù):
* :匹配其前面的字符任意次
a,b,ab,aab,acb,adb,amnb,amnbamnbamnb
a*b : a出現(xiàn)任意次,后面跟個b
a.*b: a開頭,b結(jié)束,中間跟啥都行
.* :這才表示任意長度任意字符
(正則表達式是貪婪模式,盡可能長的匹配。)
\?:表示匹配它前面的字符0次或1次。
a\?b :a出現(xiàn)0次或1次,后面跟個b。
\{m,n\} :匹配其前的字符,至少m次,至多n次。
\{1,\}
\{1,3\}
grep‘a(chǎn)\{1,3\}b’test.txt
grep‘a(chǎn).\{1,3\}b’test.txt
位置錨定:
^ :此字符后面的字符,必須出現(xiàn)在行首。
$ :錨定行尾,此字符前面的任意內(nèi)容必須出現(xiàn)在行尾。
^$ : 這個表示空白行。
\
\>或b:錨定詞尾,其后面的任意字符必須作為單詞的尾部出現(xiàn)。
grep“root\>”test.txt
grep“\
grep“\”test.txt
grep“\broot\b”test.txt
分組:
\(\)
\(ab\)*:ab可以出現(xiàn)任意次。
實現(xiàn)分組的目的,是后面再次引用它。
\1:調(diào)用前面第一個小括號內(nèi)容
\2
\3
例子:
He love his lover
She like her liker
He like his lover
要求前后一樣,匹配
l..e
grep‘\(l..e\).*\1’test.txt
grep‘\([[:digit:]]\).*\1$’test.txt
grep -E 擴展正則表達式
-A 顯示匹配行的下面的行顯示
-B 顯示匹配行的上面的行顯示
-C 顯示匹配行的上下的行顯示
grep --color -B 2‘^core id’/proc/cpuinfo
擴展正則表達式
字符匹配
.
[]
[^]
次數(shù)匹配
*
?:這里不用加反斜線
+ : (這個基本正則表達式?jīng)]有的)匹配其前面的字符至少一次。
+? 《===》*
(m,n): 擴展正則表達式不用使用轉(zhuǎn)義字符
位置錨定:
^
$
\>
\<
分組:
( ) 分組
\1,\2,\3
還支持或者
|:or
C|cat ?:表示C或者cat,表示整個左邊,整個右邊。
grep ?--color‘(C|c)at’test.txt
grep --color -E‘^[[:space:]]+’/boot/grub/grub.conf
grep -E ?=====> egrep
例子:
匹配0-255的數(shù)字。
egrep --color‘\’test.txt
例子:找IP地址
匹配(.)本身
\.
egrep‘(\\.){3}\’test.txt
IP 地址
A類1-127
B類128-191
C類192-223
D類
E類
匹配IP地址
分析:\(\.\){2}\.\
總結(jié)
以上是生活随笔為你收集整理的linux模式匹配运算符,linux之正则表达式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 异步复制建立过程_mysql
- 下一篇: 直接插入排序比较次数_程序员必须要会的直