自己慢慢积累。
分类: LINUX
2015-04-07 17:05:44
以下都是对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
z=jxow
[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
[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
[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=3
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=1
b=4
c=3
z=jxow
a=1
b=4
c=3
z=jxow
a=1
b=4
c=3
z=jxow
a=1
b=4
c=3
z=jxow