sed (Stream EDitor)是一個強大的字符流編輯器,輸入一般是來自文件,默認情況下不編輯原文件,僅對模式空間中的數據作處理;而後,將模式空間打印到屏幕顯示
sed基礎用法
sed [options]'AddressCommond' file ...
[options]
-n:靜默模式,不再默認顯示模式空間的內容
-i:直接修改原文件
-f:指定需執行的腳本文件,一般在腳本文件裏編輯匹配模式
-e:SCRIPT -e SCRIPT :可以同時執行多個腳本
-r:表示使用拓展正則表達式
Address
1. startline,endline
1,100
2./RegExp/
/^root/
3./pattern1/,/pattern2/
表示第一次被pattern1匹配到的行開始,至第一次被pattern2匹配到的行結束,中間的所有行。
4.LineNumber
表示指定的行
$:表示最後一行 $-1:表示倒數第二行
5.Startline, +N
從Startline開始,向後的N行,共N+1行
Command:
d: 刪除指定的行
sed '1,2d' /mnt/passwd
sed '4,$-1d' /mnt/passwd
sed '/nologin/d' /mnt/passwd
sed '1,+3d' /mnt/passwd
p:顯示符合條件的行
sed '/^\//p' /mnt/passwd
a:\"string":在指定的行後面追加新行,內容爲“string”
sed '2a\hello linux' /mnt/passwd
c:\'string' :用新文本替換指定行文本
sed '1c\redhat' /mnt/passwd
i:\string :在指定的行前面添加新行,內容爲"string"
sed '2i\hello linux' /mnt/passwd
r:FILE:將指定的文件添加至符合條件的行處
sed '1,2r /etc/group' /mnt/passwd
sed '$r /mnt/tuantuan.sh' /mnt/yy.sh >> /mnt/kiosk.sh (合併文件)
w:將指定範圍內的內容另存至指定的文件中
sed '/nologin/w /mnt/123' /mnt/passwd
s:查找並替換,默認只替換每行中第一次被匹配到的字符串
s/pattern/string/修飾符
sed 's/nologin/NOLOGIN/' /mnt/passwd
sed 's/^\//#/' /mnt/kiosk.sh
sed -r 's/^[[:space:]]+//' /mnt/passwd ##刪除行首的空白符
sed 's/\(wer:\)[0-9]\(:gtrh\)/\17\2/g' /mnt/456 ##將wei:3:gtrh行中數字替換成7
sed 's/^#+//g' /mnt/yy.sh ##刪除/mnt/yy.sh文件中開頭的#號
sed -r 's/^#[[:space:]]+//g' ##刪除開頭的#號及後面的空白字符
sed -r 's/^[[:space:]]+#+//g' ##刪除以空白字符後跟#號的空白字符及#號
g:全局變量
i:忽略字符大小寫
sed 's/b..h/&r/g' /mnt/passwd
sed 's/\(b..h\)/\1r/g' /mnt/passwd
sed 's/b\(..h\)/B\1/g' /mnt/passwd
s/// 格式也可用 s###、s@@@ 代替