Linux-正則、grep、sed學習筆記


一、正則和grep

正則表達式的實現分成了兩類: 基本正則表達式(BRE)和擴展的正則表達式(ERE)。

BRE 和 ERE 之間有什么區別呢?這是關於元字符的問題。BRE 可以辨別以下元字符:

^ $ . [ ] *

其它的所有字符被認為是文本字符。ERE 添加了以下元字符(以及與其相關的功能):

( ) { } ? + |

在 BRE 中,字符“(”,“)”,“{”,和 “}”用反斜杠轉義后,被看作是元字符, 相反在 ERE 中,在任意元字符之前加上反斜杠會導致其被看作是一個文本字符。


grep默認使用BRE,egrep支持ERE, GNU 版本的 grep 程序在使用了-E 選項之后也支持擴展的正則表達式。

 

基礎正則表達式匯總:

 

擴展正則表達式匯總:

{ 和 } 元字符都被用來表達要求匹配的最小和最大數目。它們可以通過四種方法來指定:

 

正規表示法的特殊字節』與一般在命令列輸入命令的『萬用字節』並不相同, 例如,在萬用字節當中的 * 代表的是『 0 ~ 無限多個字節』的意思,但是在正規表示法當中, * 則是『重復 0 到無窮多個的前一個 RE 字符』的意思,使用的意義並不相同。

 

二、sed

sed 本身也是一個管線命令,可以分析 standard input ,而且 sed 還可以將數據進行取代、刪除、新增、擷取特定行等等的功能。

 

 1、以行為單位的新增/刪除功能

sed 后面接的動作,請務必以 ' ' 兩個單引號括住。

如果只要刪除第 2 行,可以使用『 nl /etc/passwd | sed '2d' 』來達成, 若是要刪除第 3 到最后一行,則是『 nl /etc/passwd | sed '3,$d' 』,『 $ 』代表最后一行。

 

如果是要在第二行前呢?『 nl /etc/passwd | sed '2i drink tea' 』

一次性添加多行,每一行之間都必須要以反斜線『 \ 』來進行新行的添加。

 

2、以行為單位的取代與顯示功能

-n 為安靜模式,只顯示出被sed處理的行。

 

3、部分數據的搜尋並取代的功能

 

4、直接修改文件內容(危險動作)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM