正規表示式(二)
一、 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 只能輸入非零的負整數...