文本查找的需要:
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
本文轉自飛行萌51CTO部落格,原文連結:http://blog.51cto.com/8527508/1940230 ,如需轉載請自行聯系原作者