Linux命令之sed

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



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章