sed的應用正則表達式
sed編輯器逐行處理文件(或輸入),並將結果發送到屏幕。bash
sed [-n] 'AddressCommand' file ..
-n 不打印;sed不寫編輯行到標準輸出,缺省爲打印全部行(編輯和未編輯)。p命令能夠用來打印編輯行。
-f 若是正在調用sed腳本文件,使用此選項。此選項通知sed一個腳本文件支持全部的sed命令.
例如:sed -f myscript.sed input_file,這裏myscript . sed即爲支持sed命令的文件。
-c 下一命令是編輯命令。使用多項編輯時加入此選項。若是隻用到一條sed命令,此選項無用,但指定它也沒有關係。
-i 編輯原文件(此選項慎用,若是使用則原文件就會被修改,沒法恢復)。
-r 表示使用擴展正則表達式
sed由Adress和Command組成編輯器
一、指定行數量spa
如:sed -n "1,4p" /etc/passwd 1到4行顯示code
二、指定的某一行blog
如:ip
開頭:sed -n "1" /etc/passwd 字符串
結尾:sed -n "$p" /etc/passwdinput
三、開始行,+Nstring
顯示從開始行,向後的N行
如:
sed -n "1,+2p" /etc/passwd 顯示第1行的後2行
四、/模式(正則表達式)/:用來過濾特定的行
如:sed -n "/^root/p" /etc/passwd
五、/模式1/,/模式2/
第一次被模式1匹配到的行開始,到第一次被模式2匹配到的行結束,這中間的全部行。
如:sed -n "/\/bin\/bash$/p" /etc/passwd
3、Command
p:顯示符合條件的行;
d:刪除符合條件的行;
a \string :在符合條件的行後面添加;
\n:用於換行
i \string : 在指定的行前面添加新行,內容爲string
r FILE : 將指定的文件的全部內容添加到符合條件行處
w FILE : 將指定範圍內的內容另存爲至指定的文件中
s/pattern/string/修飾符:查找並替換,默認只替換每行中第一次被模式匹配到的字符串。若是想替換所有加修飾符:
g:全局替換
i:忽略字符大小寫
如;sed "s/\//#/g" /etc/fstab 把全部的/替換成#號
s///:能夠不用/來做爲分隔,能夠是s***,s###
如:sed "s*\/*#*g" /etc/fstab
例子:若有一文件a內容爲: hello like
haw a you ,love
自身引用(爲串加上字符):
使用&:引用模式匹配的整個串
l..e : like --->liker
love --->lover
語句:sed "s#l..e#&r#g" a
後項引用(修改串):
l..e : like -->Like
love --> Love
語句:sed "s#l(..e)#L\1#g" a