Chinaunix首页 | 论坛 | 博客
  • 博客访问: 139325
  • 博文数量: 37
  • 博客积分: 2671
  • 博客等级: 少校
  • 技术积分: 335
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-11 13:18
文章分类

全部博文(37)

文章存档

2011年(16)

2010年(21)

我的朋友

分类:

2011-01-26 20:07:38

1):替换命令
g/addr/s/expr/replace/g[pWn]
gpWn

replace中的特殊字符
&
\
\n

[root@oracle ~]# sed -n 's/\t/>/2p' m
b      >
[root@oracle ~]# sed -n 'l' m
a.$
b\t\t\t$

2):n命令

[root@oracle ~]# sed -n '2{
p --打印出第二行,即b
n --由于指定了-n,所以在n时没有打印b
p --当前行是第三行,即c
}' m
b
c
[root@oracle ~]# cat m
a.
b
c
d
ab


3):转换命令y

[root@oracle ~]# cat m
abcdefghijk
[root@oracle ~]# eval $(echo sed -n "'y/$(echo {a..z}|tr -d [[:blank:]])/$(echo {A..Z}|tr -d [[:blank:]])/;p'" m)
ABCDEFGHIJK

4):行号的打印

[root@oracle ~]# cat m
abcdefghijk
[root@oracle ~]# sed -n '1{
=
p
}' m
1
abcdefghijk

=就是一个打印行号的命令,在ed中也有。

5):读和写文件
r w
注意s命令的flag部分也有一个W命令,它只有在s命令成功后才写出。

[root@oracle ~]# cat a
a
[root@oracle ~]# cat b
b
[root@oracle ~]# sed '/a/w a
/b/w b
' m

注意:不可以写成下面这样的
[root@oracle ~]# fc
sed '/a/w a;/b/w b' m
sed: couldn't open file a;/b/w b: 没有那个文件或目录

r命令也一样

[root@oracle ~]# sed '/a/r a
> /b/r b' m
a
a
b
b

6):退出命令q

[root@oracle ~]# cat m
a
b
[root@oracle ~]# sed '1q' m
a



sed命令高级篇

1):n和N命令

[root@oracle ~]# sed -n '$!n;p' m
b
c
[root@oracle ~]# sed -n 'N;p' m
a
b
[root@oracle ~]# sed -n '$!N;p' m
a
b
c
[root@oracle ~]# cat m
a
b
c


2):多行删除--D命令的特殊性

D只删除模式空间中的第一行,且返回脚本的头部重新运用命令行。

[root@oracle ~]# cat m
1,abcdefg
2,abcdefg
3,abcdefg
4,abcdefg
[root@oracle ~]# sed -n 'n;s/a/m/gp;D' m
2,mbcdefg
4,mbcdefg

3):多行打印P

它只打印多行模式空间中的第一行。

[root@oracle ~]# sed -n 'N;P' m
1,abcdefg
3,abcdefg

4):三个命令的综合应用--构造输入循环

[root@oracle ~]# cat m
Hello
World Hello
World
[root@oracle ~]# sed -n 'N;s/Hello\nWorld/Hello\
> Kitty/p' m
Hello
Kitty Hello

上面没有成功的,你可以思考下使用N,P,D三个命令来组合实现。

5):保持空间

x h,H g,G

x是交互保持空间与模式空间内容,h是把模式空间内容复制到模式空间,H是append。

6):高级的流控制语句

b和t

[root@oracle ~]# sed -n 'b label;s/a/m/gp;:label' m
[root@oracle ~]# cat m
abcde
fghij

t命令,如果成功替换了t就生效

[root@oracle ~]# sed -n 's/a/m/gp
> t
> s/b/o/gp
> ' m
mbcde
[root@oracle ~]# fc
sed -n 's/a/m/gp
s/b/o/gp
' m
mbcde
mocde
阅读(1065) | 评论(0) | 转发(0) |
0

上一篇:awk高级编程

下一篇:sed学习助记

给主人留下些什么吧!~~