sed(流編輯器)正則表達式
sed基本用法:vim
sed:Stream EDitor編輯器
行編輯器(另外一種:全屏編輯器:vi、vim)ide
sed:模式空間spa
sed默認部編輯源文件,僅對模式空間中的數據作處理;然後將模式空間打印到屏幕(默認朱行讀取);ip
sed 'AddressCommand' file ...內存
對這個或者這種(file)文件當中的,符合這個地址指定範圍(Address)內的行 實現執行如下編輯命令(Command)。字符串
Address:string
一、StartLine,Endlineit
好比1,100
$:最後一行
$-1 倒數第二行
二、/RegExp/
/^root/
3 、/pattern1/,/pattern2/
第一次被pattern1匹配到的行開始,至第一行被pattern2匹配到的行結束,這中間的全部行
四、LineNumber
指定的行
五、StartLine,+N
從StartLine開始,向後的N行;
Command:
d:刪除符合條件的行;
p:顯示符合條件的行;注意,直接使用p會顯示兩次,一次是符合條件的內容,一次是顯示模式空間;須要加-n
如下d的例子把d改成p,sed後面加個
-n
,就只顯示須要打印的內容
例如: sed -n '/^\//p' /etc/fatab
-i:直接修改原文件
-e: SCRIPT -e SCRIPT:能夠同時執行多個腳本
-f /PATH/TO/SED_SCRIPT
sed -f /path/to/scripts file 把某個路徑下的腳本一個個運用到file裏
-r:表示使用擴展正則表達式
a \string:在指定的航後面追加新行,內容爲"string"(不包括斜槓)
sed '/^\//a \hhhhh' /etc/fatab
加兩行:
sed '/^\//a \hhhhh\n\hhhhh' /etc/fatab(注意\n爲換行號)
i \string:在指定的航前面追加新行,內容爲"string"(不包括斜槓)
r FILE:將指定的文件的內容添加到符合條件的行處
sed '2r /etc/issue' /etc/fatab
sed '1,2r /etc/issue' /etc/fatab 一二行添加
w FILE:將指定範圍內的內容內存至指定的文件中
sed '/oot/w /tmp/oot.txt' /etc/fatab
s///:查找並替換,默認只替換每一行中第一次被匹配到的字符串
s/pattern/string/(修飾符[可選]):
加修飾符:
g:全局替換
i:查找時忽略字符大小寫
s///也能夠s###或s@@@只須要這三個符號同樣,若是使用@@@或者###,則/不須要用轉義字符表示,如:'s@/@#@g'
一、sed 's/oot/OOT/' etc/fstab :每一行的oot更換成OOT
二、sed '1,2s/oot/OOT/' etc/fstab :第一二行的oot更換成OOT
三、sed 's/^\//#/' etc/fstab :每一行行首的/更換成#
四、sed 's/\//#/' etc/fstab :每一行的/更換成#
五、sed 's@l..e@&r@g' sed.txt
&引用模式匹配到的整個串
本來內容:
hello, like
hi, my love
後來:
hello,liker
hi,my lover
還能夠 使用後向引用:
sed 's@\(l..e\)@\1r@g' sed.txt
例子1:刪除符合條件的行:
把 /etc/fstab的一、2行刪除
sed '1,2d' /etc/fstab
例子2:刪除第3行到倒數第二行(暫時去掉-1):
sed '3,$-1d' /etc/fstab
例子3:只要行中包含oot就給予刪除:(使用模式,過濾特定的行)
sed '/oot/d' /etc/fstab
例子4:
sed '3,$+1d' /etc/fstab
例子5:
sed '1,1+2d' /etc/fatab
sed '2d' /etc/fatab
例子6:刪除以斜線開頭的行
sed '/^\//d' /etc/fatab