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



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