sed命令:
用法:sed[選項]…{腳本命令}[輸入文件]…
常用選項:
-i,--in-place 直接修改源文件;
-n 靜默輸出,屏蔽sed的自動打印;
-escript 允許多個腳本指令被執行;
-fscript-file 從文件中讀取腳本指令;
--help 顯示幫助文檔;
腳本指令彙總:
指令 |
功能 |
指令 |
功能 |
s |
替換 |
d |
刪除 |
a |
追加 |
i |
插入 |
c |
更改 |
l |
打印(顯示非打印字符) |
y |
按字符轉換 |
L |
打印(不顯示非打印字符) |
p |
打印 |
r |
讀入文件內容 |
w |
保存至文件 |
q |
退出 |
(1) 插入
sed ‘2a 在第2行後追加的內容’ test.txt
sed ‘3i 在第3行前追加的內容’ test.txt
sed “a\\$var1” test.txt #在每行後追加變量var1,注意雙引號
(2) 刪除
sed ‘3,4d’ test.txt #刪除第3,4行
(3) 修改
sed‘s/被修改內容/修改內容/g’ test.txt
(4) 匹配
sed‘/example/a 匹配包含example的行後追加的內容’ test.txt
sed‘/^Begin/d’ test.txt #匹配Begin字符開始的行並刪除
sed‘/^$/d’ test.txt #刪除最後一行
(5) 腳本中的匹配替換
指令格式:[address]s/pattern/replacement/flags
address爲操作地址,s爲替換指令,/pattern/匹配需要替換的內容,/replacement/爲替換的新內容。
Flags標記可以是:
n 1~512之間的數字,表示對指定模式的第n次出現進行替換;
g 對所有匹配進行全局更改;
p 打印內容;
& 用正則表達式匹配的內容進行替換
\ 轉義
(5) 多行操作的實例
使用sed命令將編集前文件轉化爲編集後
[編集前] [編集後]
/var/log/glance/*.log { /var/log/glance/*.log {
daily rotate 240
rotate 10 missingok
missingok compress
compress nodateext
nodateext size 0
size 100M ifempty
maxage 10 maxage 10
} }
命令:
sed-e 's/daily/rotate 240/g' -e '3d' -e 's/size 100M/size 0/g' -e '7a\ ifempty' testlog
(testlog即爲編集前文件)
修改多行的腳本內容
/^\/var/,/}/c\
/var/log/glance/*.log {\
rotate 240\
missingok\
compress\
nodateext\
size 0\
ifempty\
maxage 10\
}\
以上參考了<<Linux運維之道>>的部分內容,書中一些錯誤,在實際操作中可以被發現,另外推薦一些不錯的網址用於查找sed的使用。
http://sed.sourceforge.net/sed1line_zh-CN.html
http://litaotao.blog.51cto.com/6224470/1288526