1.簡介
是模式空間,sed是非交互式的編輯器。它不會修改文件,除非使用shell重定向來保存結果。默認情況下,所有的輸出行都被打印到屏幕上。
選項 功能 -e 進行多項編輯,即對輸入行應用多條sed命令時使用 -n 取消默認的輸出 -f 指定sed腳本的文件名
d: 刪除符合條件的行;sed '1,2d' /etc/xx ;
命令 功能 a\ 在當前行後添加一行或多行。多行時除最後一行外,每行末尾需用“\”續行
c\ 用此符號後的新文本替換當前行中的文本。多行時除最後一行外,每行末尾需用"\"續行 i\ 在當前行之前插入文本。多行時除最後一行外,每行末尾需用"\"續行 d 刪除行 h 把模式空間裏的內容複製到暫存緩衝區 H 把模式空間裏的內容追加到暫存緩衝區 g 把暫存緩衝區裏的內容複製到模式空間,覆蓋原有的內容 G 把暫存緩衝區的內容追加到模式空間裏,追加在原有內容的後面 l 列出非打印字符 p 打印行 n 讀入下一輸入行,並從下一條命令而不是第一條命令開始對其的處理 q 結束或退出sed r 從文件中讀取輸入行 ! 對所選行以外的所有行應用命令 s 用一個字符串替換另一個 g 在行內進行全局替換 w 將所選的行寫入文件 x 交換暫存緩衝區與模式空間的內容 y 將字符替換爲另一字符(不能對正則表達式使用y命令)
p: 顯示符合條件的行;
a \"string": 在指定的行後面追加新行,內容爲string
\n:可以用於換行
>:sed '/^\//a \# hello word' /fstab2
i \string: 在指定的行前面添加新行,內容爲string
r FILE: 將指定的文件的內容添加至符合條件的行處
>:sed '1r etc/issue' /etc/fstab
w FILE: 將地址指定的範圍內的行另存至指定的文件中;
>:sed '/oot/w /tmpoot.txt' /etc/fstab
s/pattern/string/修飾符: 查找並替換,默認只替換每行中第一次被模式匹配到的字符串
>: sed 's/^\//#/' /fstab2 (第一行爲'/' 替換成'#')
加修飾符
g: 全局替換
i: 忽略字符大小寫
s///: s###, s@@@
或 sed 's@/@#@g' /fstab2
\(\), \1, \2
l..e: like-->liker
love-->lover
>:sed 's#1..e#&r#g' sed.txt 或 sed 's#\(1..e\)#\1r#g' sed.txt
like-->Like
love-->Love
>:sed 's#l\(..e\)#L#g' sed.txt
&: 引用模式匹配整個串
3.sed練習:
1、刪除/etc/grub.conf文件中行首的空白符;
sed -r 's@^[[:spapce:]]+@@g' /etc/grub.conf
2、替換/etc/inittab文件中"id:3:initdefault:"一行中的數字爲5;
sed 's@\(id:\)[0-9]\(:initdefault:\)@\15\2@g' /etc/inittab
3、刪除/etc/inittab文件中的空白行;
sed '/^$/d' /etc/inittab
4、刪除/etc/inittab文件中開頭的#號;
sed 's@^#@@g' /etc/inittab
5、刪除某文件中開頭的#號及後面的空白字符,但要求#號後面必須有空白字符;
sed -r 's@^#[[:space:]]+@@g' /etc/inittab
6、刪除某文件中以空白字符後面跟#類的行中的開頭的空白字符及#
sed -r 's@^[[:space:]]+#@@g' /etc/inittab
7、取出一個文件路徑的目錄名稱;
echo "/etc/rc.d/" | sed -r 's@^(/.*/)[^/]+/?@\1@g'
基名:
echo "/etc/rc.d/" | sed -r 's@^/.*/([^/]+)/?@\1@g'