sed命令的一些简单应用

sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间” (pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末 尾。文件内容并无 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操做;编写转换程序等。shell

一下都是对file这个文件进行操做编辑器

文件内容以下spa

a=1
b=2
c=3
z=jxow

a=1
b=2
c=3
z=jxow

a=1
b=2
c=3
z=jxow

a=1
b=2
c=3
z=jxow
server

[root@server1 shell]# sed '1,2d' file        #删除第一,二行的内容
c=3
z=jxow

a=1
b=2
c=3
z=jxow

a=1
b=2
c=3
z=jxow

a=1
b=2
c=3
z=jxow
[root@server1 shell]# sed '7,$d' file    #删除低七行到末尾的内容
a=1
b=2
c=3
z=jxow

a=1
[root@server1 shell]# sed '$d' file    #删除最后一行的内容
a=1
b=2
c=3
z=jxow

a=1
b=2
c=3
z=jxow

a=1
b=2
c=3
z=jxow

a=1
b=2
c=3
字符串

[root@server1 shell]# sed 's/a=1/a=3/' file    #替换a=1为a=3,这个只是简单的匹配某一行第一个a=1,后面不会进行匹配,若是想匹配,加上参数g,命令格式如sed 's/a=1/a=3/g' file
a=3
b=2
c=3
z=jxow

a=3
b=2
c=3
z=jxow

a=3
b=2
c=3
z=jxow

a=3
b=2
c=3
z=jxow
test

[root@server1 shell]# sed 's/a=1/&a=2/g' file    #&符号表示替换换字符串中被找到的部份
a=1a=2
b=2
c=3
z=jxow

a=1a=2
b=2
c=3
z=jxow

a=1a=2
b=2
c=3
z=jxow

a=1a=2
b=2
c=3
z=jxow

sed

[root@server1 shell]# sed -n '/a=1/p' file    #找到行中有a=1,参数n要求显示只是匹配行
a=1
a=1
a=1
a=1
[root@server1 shell]# sed 's#a=1#a=3#g' file    #不论什么字符,紧跟着s命令的都被认为是新的分隔符,因此,“#”在这里是分隔符,代替了默认的“/”分隔符。表示把全部a=1替换成a=3file

a=3
b=2
c=3
z=jxow

a=3
b=2
c=3
z=jxow

a=3
b=2
c=3
z=jxow

a=3
b=2
c=3
z=jxow
程序

[root@server1 shell]# sed -n '/a=1/,/c=3/p' file    #打印范围a=1到c=3之间的东西,包括本身
a=1
b=2
c=3
a=1
b=2
c=3
a=1
b=2
c=3
a=1
b=2
c=3重定向

[root@server1 shell]# sed -n '3,/a=1/p' file    #打印从第三行开始到第一个包含以a=1开始的行之间的全部行。
c=3
z=jxow

a=1

[root@server1 shell]# sed '/c=3/r test' file    #显示在与c=3匹配的行后面,若是匹配多行,则test的内容将显示在全部匹配行的下面。 
a=1
b=2
c=3
d=4
z=jxow

a=1
b=2
c=3
d=4
z=jxow

a=1
b=2
c=3
d=4
z=jxow

a=1
b=2
c=3
d=4
z=jxow

[root@server1 shell]# sed '/c=3/w test' file    #将匹配出来的结果写到文件test里面

[root@server1 shell]# cat test
c=3
c=3
c=3
c=3

[root@server1 shell]# sed '/a=1/{n;s/b=2/b=4/g}' file    #-若是file被匹配,则移动到匹配行的下一行,替换这一行的b=2,变为b=4,并打印该行,而后继续。  a=1b=4c=3z=jxowa=1b=4c=3z=jxowa=1b=4c=3z=jxowa=1b=4c=3z=jxow

相关文章
相关标签/搜索