正則表達式:
正則表達式就是用某種模式去匹配一類字符串的一個公式
正則表達式是通過正則表達式引擎來實現,它是解釋正則表達式的基礎軟件
LINUX中,常用的正則表達式引擎有兩種:基本正則表達式(BRE)、擴展正則表達式(ERE)
大多數LINUX程序符合擴展正則表達式,但有些程序(如sed)只符合ERE的子集。
正則表達式的基礎
普通字符(無特殊含義)和元字符(有特殊含義)
正則表達式區分大小寫
元字符
基本正則
. 匹配單個字符
* 匹配0個或多個字符
^ 開始處
$ 結尾
[] 字符範圍
擴展正則
? 零個或一個字符
+ 一個或多個字符
{} 用於指定出現次數
| 正則表達式作邏輯或
() 分組
其它(很多軟件不支持)
\< \> 匹配單詞的開始和結束
\( \) 分組
例:
^ 以什麼開頭(^一定要放在開始處,放在其它位置就作普通字符了)
ll | grep ^d 中顯示目錄
cat /etc/passwd | sed -n '/^r/p'
echo "This ^ is a test" | sed -n '/s ^/p' -- ^作普通字符,沒出
現在最前
This ^ is a test
echo "This ^ is a test" | sed -n '/^ i/p' -- 不是普通字符了
$ 結尾(要放在後面)
顯示系統中不能登錄的用戶
cat /etc/passwd | sed -n '/nologin$/p'
^$ 空行
[root@t176 script]# cat test.txt | sed -n '/^this is a test$/p' --只包
含
this is a test
[YyNn0-9]
常見的正則表達式:
/^$/ 空行
/^.*$/ 整行
特殊字符類
[[:alpha:]] 任意字母
[[:alnum:]] 任意字母和數字
[[:blank:]] 空格或tab
[[:digit:]] 數字
[[:lower:]] 小寫字母
[[:print:]] 任意可打印字符
[[:space:]] 空格
[[:upper:]] 大寫字母