linux模式匹配运算符,linux之正则表达式
文件查找的需要:
grep:(GLOBAL Research) 根據模式(網)去搜索文本,而后將符合模式的文本行顯示出來。
【部分匹配,顯示時顯示一行】
Pattern:模式。(文本字符以及正則表達式元字符組合而成的匹配條件)
例子:grep‘root’/etc/passwd
grep所支持的選項:
-i:忽略大小寫
--color 顯示顏色
alias grep=’grep --color’
-v: 反向查找,顯示沒有被模式匹配的行
-o:只顯示被模式匹配出來的字符串,每個字符串顯示為一行。
回顧一下 globbing(文件名通配)
* :任意長度任意字符
?:任意單個字符
[]:指定范圍內的
[^]:指定范圍之外的
如何寫模式pattern?
正則表達式 Regular EXPression;REGEXP
元字符:
.:用點表示任意單個字符
grep‘r..t’/etc/passwd
[] :匹配指定范圍內的任意單個字符
[^]:匹配執行范圍之外的任意單個字符
字符集合:[:digit:] ?[:space::] ?[::upper::] ?[:lower:] ?[:alpha:] ?[:alnum:]
匹配次數:
* :匹配其前面的字符任意次
a,b,ab,aab,acb,adb,amnb,amnbamnbamnb
a*b : a出現任意次,后面跟個b
a.*b: a開頭,b結束,中間跟啥都行
.* :這才表示任意長度任意字符
(正則表達式是貪婪模式,盡可能長的匹配。)
\?:表示匹配它前面的字符0次或1次。
a\?b :a出現0次或1次,后面跟個b。
\{m,n\} :匹配其前的字符,至少m次,至多n次。
\{1,\}
\{1,3\}
grep‘a\{1,3\}b’test.txt
grep‘a.\{1,3\}b’test.txt
位置錨定:
^ :此字符后面的字符,必須出現在行首。
$ :錨定行尾,此字符前面的任意內容必須出現在行尾。
^$ : 這個表示空白行。
\
\>或b:錨定詞尾,其后面的任意字符必須作為單詞的尾部出現。
grep“root\>”test.txt
grep“\
grep“\”test.txt
grep“\broot\b”test.txt
分組:
\(\)
\(ab\)*:ab可以出現任意次。
實現分組的目的,是后面再次引用它。
\1:調用前面第一個小括號內容
\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
擴展正則表達式
字符匹配
.
[]
[^]
次數匹配
*
?:這里不用加反斜線
+ : (這個基本正則表達式沒有的)匹配其前面的字符至少一次。
+? 《===》*
(m,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的數字。
egrep --color‘\’test.txt
例子:找IP地址
匹配(.)本身
\.
egrep‘(\\.){3}\’test.txt
IP 地址
A類1-127
B類128-191
C類192-223
D類
E類
匹配IP地址
分析:\(\.\){2}\.\
總結
以上是生活随笔為你收集整理的linux模式匹配运算符,linux之正则表达式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 异步复制建立过程_mysql
- 下一篇: linux 其他常用命令