天天看點

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

本文轉自飛行萌51CTO部落格,原文連結:http://blog.51cto.com/8527508/1940230 ,如需轉載請自行聯系原作者

繼續閱讀