正則表達式的實現分紅了兩類: 基本正則表達式(BRE)和擴展的正則表達式(ERE)。正則表達式
BRE 和 ERE 之間有什麼區別呢?這是關於元字符的問題。BRE 能夠辨別如下元字符:spa
^ $ . [ ] *
其它的全部字符被認爲是文本字符。ERE 添加了如下元字符(以及與其相關的功能):code
( ) { } ? + |
在 BRE 中,字符「(」,「)」,「{」,和 「}」用反斜槓轉義後,被看做是元字符, 相反在 ERE 中,在任意元字符以前加上反斜槓會致使其被看做是一個文本字符。blog
grep默認使用BRE,egrep支持ERE, GNU 版本的 grep 程序在使用了-E 選項以後也支持擴展的正則表達式。input
基礎正則表達式彙總:class
擴展正則表達式彙總:import
{ 和 } 元字符都被用來表達要求匹配的最小和最大數目。它們能夠經過四種方法來指定:基礎
『正規表示法的特殊字節』與通常在命令列輸入命令的『萬用字節』並不相同, 例如,在萬用字節當中的 * 表明的是『 0 ~ 無限多個字節』的意思,可是在正規表示法當中, * 則是『重複 0 到無窮多個的前一個 RE 字符』的意思,使用的意義並不相同。擴展
sed 自己也是一個管線命令,能夠分析 standard input ,並且 sed 還能夠將數據進行取代、刪除、新增、擷取特定行等等的功能。sed
sed 後面接的動做,請務必以 ' ' 兩個單引號括住。
若是隻要刪除第 2 行,可使用『 nl /etc/passwd | sed '2d' 』來達成, 如果要刪除第 3 到最後一行,則是『 nl /etc/passwd | sed '3,$d' 』,『 $ 』表明最後一行。
若是是要在第二行前呢?『 nl /etc/passwd | sed '2i drink tea' 』
一次性添加多行,每一行之間都必需要以反斜線『 \ 』來進行新行的添加。
-n 爲安靜模式,只顯示出被sed處理的行。