4.4學習筆記-REGEXP1(正則表達式)
文本查找的需要:
grep egrep fgrep
grep: 根據模式,搜索文本,並將符合模式的文本行顯示出來
Pattern(模式):文本字符和正則表達式的元字符組合而成的匹配條件
grep [option] PATTERN [FILE...]
grep ‘root‘ /etc/passwd
-i 忽略字符大小寫
--color 加顏色
-v 反向查找(顯示沒有被模式匹配的行)
-o 只顯示被模式匹配到的字符串
* 任意長度的任意字符
? 任意單個字符
[]:指定範圍內
[^]:指定範圍外
正則表達式:Regular EXPression,REGEXP
元字符:
. 匹配任意單個字符
[]:匹配指定範圍內的任意單個字符
[^]:匹配指定範圍外的任意單個字符
[:digit:] [:lower:]
[:punct:]標點符號 ---字符集合
[:upper:] [:space:] [:alpha:] [:alnum:]
字符次數(貪婪模式):
* :匹配其前面的字符任意次數
a b ab aab acb adb amnb
a*b a出現任意次跟一個b
a.*b ab中間任意字符
.* :任意長度的任意字符
grep ‘a\?b‘ test.txt
\? :匹配其前面的字符1次或0次
\{m,n\}:匹配其前面的字符至少m次,至多n次
\{1,\}
\{0,3\}
grep ‘a.\{1,3\}‘ test.txt
位置錨定:
^:錨定行首,此字符後面的任意內容必須出現在行首
$:錨定行尾,此字符後面的任意內容必須出現在行尾
grep ‘^r..t‘ test.txt
^$:空白行
grep ‘[[:digit:]]$‘ /etc/inittab
\<或者\b:其後面的任意字符必須作為單詞首部出現 錨定詞首
\>或者\b:其前面的任意字符必須作為單詞的尾部出現 錨定詞尾
\<root\>
grep ‘root\>‘ test.txt 以root作為詞尾
grep ‘\<root‘ test.txt 以root作為詞首
分組:
\(\)
\(ab\)* *修飾的一個ab一個整體
後向引用
\1:第一個左括號以及與之對應的右括號所包括的所有內容
\2:
\3:
He love his lover
she like her liker.
he like his lover
grep ‘\(l..e\).*\1‘ test3.txt
grep ‘\([0-9]\).*\1$‘ /etc/inittab
4.4學習筆記-REGEXP1(正則表達式)