正則表達式 :就是處理字符串的方法,它是以行爲爲單位來進行字符串的處理行爲,通過一些特殊符號的輔助,可以讓用戶輕易達到查找,刪除,替換某特定字符串的處理程序。
正則表達式並不是一個工具程序,而是一種字符串處理的標準依據,只要工具程序支持這種表示法,那麼該工具程序就可以用來作爲正則表達式的字符串處理之用。
例如 :vi grep awk sed 等工具都支持正則表達式
特殊字符 基本正則表達式 :
- .: 匹配任意單個字符
- []: 指定範圍內的任意單個字符
- [^]:否定符
- [:upper:],A-Z [:lower:]a-z, [:digit:]0-9, [:alpha:]a-z A-Z,
- [:alnum:]a-z A-Z 0-9,[:space:]空白字符, [:punct:] “ ‘ ?!;:#$
- [^[:upper:]] 不是A-Z的
- ?:匹配其前面的字符0次或1次 需要加\? 纔可以使用
- +:匹配其前面的字符至少一次
- *:匹配其前面的字符任意次
- .*:任意長度的任意字符,貪婪模式 最長匹配
- X\{m\} 精確匹配X m次
- X\{m,n\} 匹配X m到n 次
- X\{0,n\} 匹配X最多 n次
- X\{m,\} 匹配X最少 m次
^$ :錨定行首 與行尾 ^$合用表示空白行
\< \>: 錨定詞首 與詞尾 \bWORD\b 同樣
\(\):分組 後向引用 \1 ,\2擴展的正則表達式: \(\)-->() \{\}-->{} +: 次數匹配,匹配其前的字符至少1次; |:或者 a|b, (C|c)at: Cat,cat; C,cat
grep :查找文件裏符合條件的字符串 文本過濾工具
grep [options ] pattern files選項 模式 文件
pattern 可以使用 ’‘ 也可以使用 ”“
常用選項: -n 順便輸出行號
-v :對結果取反
-i :忽略字母大小寫
-o :僅顯示匹配到的字符串
-E:支持擴展正則表達式
-A n :符合條件的行的後面n行
-B n :符合條件的行的前面n行 -C n :符合條件的行的前後N行
example :
- #grep --color "r.*t" /etc/passwd
- root:x:0:0:root:/root:/bin/bash 貪婪匹配
- operator:x:11:0:operator:/root:/sbin/nologin
- ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
- # grep --color -o "r.*t" /etc/passwd -o 顯示匹配到的內容
- root:x:0:0:root:/root
- rator:x:11:0:operator:/root 貪婪匹配
- r:/var/ft
- # grep --color -o "^r.*t" /etc/passwd ^ 錨定行首
- root:x:0:0:root:/root
- rpc:x:32:32:Port
# echo "abbc ab abc ac " | grep -o "ab\?c" ?需要加\轉義一下 匹配 0次或1次 abc ac
- # grep --color -o "\<r.*t\>" /etc/passwd 錨定單詞
- root:x:0:0:root:/root
- root
# echo "abbc ab abc ac " | grep -o -E "ab?c" 擴展正則表達式 可以直接使用 abc ac