正規表示式 二

2021-06-20 14:31:25 字數 1569 閱讀 2617

正規表示式(二)

一、 sed 可以將資料進行取代、刪除、新增、擷取

語法:sed [-nefr] [動作]

-n、使用安靜模式。在一般sed的用法中,所有來自stdin的資料一般都會被列出到螢幕上。但是加上-n引數後,則只有經過sed特殊處理的哪一行才會被列出

-e、直接在指令列模式上進行sed的動作編輯

-f、直接將sed的動作寫在乙個檔案內,-f filename 則可以執行filename內的sed動作

-r、sed的動作支援的是擴充套件正規表示式的語法

-i、 直接修改讀取的檔案內容,而不是由螢幕輸出

動作說明:[n1[,n2]] function 

n1、n2:不一定會存在,一般表示選擇進行操作的行數 

function: 

a、新增在當前行後面

c、取代

d:刪除

i:插入在當前行前面

p:列印

s:取代,如 1,20s/old/new/g  

例項:一 、以行為單位的新增、刪除功能

1、將 /etc/passwd 的內容列出來且列印行號,同時,將第 2~5 行刪

除 nl /etc/passwd | sed '2,5'd

2、承上題,在第二行後加上「hello word」一行

nl /etc/passwd | sed '2a hello word'

3、承上題,

在第二行後加上「hello word」兩行

nl /etc/passwd | sed '2a hello word \ 

> hello word2' 

說明(新增多行時,每一行之間都必須要以反斜槓進行新行的增加)

二、以行為單位進行取代與顯示功能

1、我想將第 2-5 行的內容取代成為「no 2-5 number

」nl /etc/passwd | sed '2,5c no 2-5 number'

2、列出第10-20行之間的資料

nl /etc/passwd | sed -n '10,20p' 必須加-n

三、部分資料的搜尋並取代

cat /etc/man.config | grep 'man'| sed 's/#.*//g'| sed '/^$/d'

二、egrep 擴充套件這則表示式

1、+:重複乙個或乙個以上的前乙個字元

egrep -n 'go+d' regular_express.txt :搜尋god good goood

2、?:零個或者乙個的乙個字元

egrep -n 'go?d' regular_express.txt :搜尋gd god

3、|:或者 

egrep -n 'gd|good' regular_express.txt :

搜尋gd good

4、():找出群組

egrep -n 'g(la|oo)d' regular_express.txt :搜尋glad或者good

5、()+:多個組群

echo 'axyzxyzxyzxyzc' | egrep 'a(xyz)+c' 

找開頭是 a 結尾是 c ,中間有乙個以上的 "xyz" 字串

正規表示式(二) 正規表示式的切割

切割 還記得stirng的split的方法嗎.可以按照 空格,豎線 對字串進行切割.正規表示式的切割 是指,我們按照正規表示式的規則對字串來進行一些複雜的切割 比方說現在我想按照多個空格來進行切割 string str zhangsan lisei wangwu string reg s s在這裡代...

正規表示式(二)

三 正規表示式高階 1.後向引用 exp 匹配exp,並捕獲文字到自動命名的組裡,命名規則為從左向右 從1開始依次分組,分組0對應整個正規表示式 n 重複搜尋前面分組n匹配的文字 例如 b w b s 1 b,編號為1的分組為 b w b,表示乙個單詞,整個表示式用來匹配重複的單詞,像go go,或...

正規表示式(二)

只能輸入數字 0 9 只能輸入n位的數字 d 只能輸入至少n位的數字 d 只能輸入m n位的數字 d 只能輸入零和非零開頭的數字 0 1 9 0 9 只能輸入有兩位小數的正實數 0 9 0 9 只能輸入有1 3位小數的正實數 0 9 0 9 只能輸入非零的正整數 1 9 0 9 只能輸入非零的負整數...