1、sed:Stream Editor 行編輯器。工作原理:默認不編輯源文件,僅僅對模式空間的數據做處理。一行行將文件讀入模式空間,處理完后再將模式空間的內容輸出一遍。
sed和grep、awk編輯器都是shell編程中的重要工具。
2、sed語法:
sed [option] 'AddressCommand' file
-n:靜默模式不再顯示空間中的內容
-i:直接修改源文件,不建議使用
-e SCRipT -e SCRIPT :可以同時執行多個腳本
-f: sed -f /path/to/scripts file 執行腳本
-r:表示使用擴展正則表達式
Address:
1>StartLine,Endline
比如1,100
$代表最后一行
2>/RegExp/
/^root/
3>/pattern1/,/pattern2/
第一次被匹配到最后一次被匹配
4>LineNumber
指定的行
5>StartLine,+N
從StartLine開始,向后N行
Command:
d:刪除符合條件的行
p:顯示符合條件的行
a /string:在指定行后邊后邊追加新行,內容為string
i /string :在制定的行前邊插入新行,內容為string
r FILE:將文件內容添加到符合條件的行處
w FILE:將地址指定的范圍內的行寫入到指定文件
s/pattern/string/ 修飾符:查找并替換,默認只替換每一行中的第一次沒模式匹配到的字符串,/可以用其他的符號代替如s### s@@@
加修飾符g:全局替換
i:忽略字符大小寫
&:引用模式匹配整個串
3、使用實例
sed "1,2d" /etc/fstab //刪除1-2行的內容
sed “1,2d” /etc/fstab //刪除1-2行的內容
sed “/^///d” /etc/fstab //刪除斜線開頭的行
sed -n “/^///p” /etc/fstab //-n靜默模式,只顯示符合條件的行,不再顯示模式空間的行
sed “/^///a /#hello1/n#hello2” /etc/fstab //符合條件的行后追加兩行
sed “2r /etc/issue” /etc/fstab //將符合條件的第二行后邊追加上從issue文件中讀取的內容
sed “/boot/w /tmp/1.txt” /etc/fstab //將符合條件的行寫到目標文件
sed “s/oot/OOT/g” /etc/fstab //將文件中所有的行中凡是有oot的替換為OOT 其中g全局替換
sed ‘s#l..e#&r#g’ sed.txt // 將前邊匹配到的字串用&引用
sed ‘s#/(l..e/)#/1r#g’ sed.txt // 將前邊匹配到的字串用/1引用 #號里邊使用/就不用轉義了,里邊的分組()得轉義
history | sed ‘s#^[[:space:]]*##g’ | cut -d ‘ ’ -f1 //用于進行查看監控執行命令歷史很好用
echo '/etc/rc.d/1.txt' | sed 's@^(/.*/)(.*)@/2@g' //取得路徑的文件名(基名)取得路徑文件名
|
新聞熱點
疑難解答