Chinaunix首页 | 论坛 | 博客
  • 博客访问: 329577
  • 博文数量: 69
  • 博客积分: 2090
  • 博客等级: 大尉
  • 技术积分: 708
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-23 09:31
文章分类

全部博文(69)

文章存档

2012年(1)

2011年(4)

2010年(48)

2009年(14)

2008年(2)

我的朋友

分类:

2010-08-09 10:28:17

sed(stream editor),流编辑器,是一个批处理编辑器,它可以对来自文件或者标准输入输出流进行处理
sed的语法格式如下:
sed  [-n]  程序  [-i] 文件
sed  [-n]  -f  程序文件 [-i]文件

-n 仅显示处理后的结果
文件就是要处理的文件,如果没有文件,则从标准输入获取输入流
程序就是在命令行中输入的程序;
程序文件就是将多个sed的程序段写文件文件中,然后使用-f选项来使用程序文件,而不用在命令行输入 。
使用-i参数,sed将执行结果不输出到标准输出,而是输出到原文件中   

sed程序由一行或者多行命令组成
sed 命令的格式如下:
 [地址[,地址]]   指令  [参数列表]

如果想要多个sed命令放在一行,可以使用;进行分隔
行号可以作为地址来选择某一行。
正则表达式可以用来选择符合条件的行做为地址
如果没有指定地址,则sed处理所有行

指令:
d 删除
sed   ‘/aaa/d’  file  删除file中含有aaa的行
a 追加,在指定的行的下一行后边追加文本
sed  ‘1,3 a  hello world’ 在第1到3行的每一行的下一行追加hello world   


i 插入,在指定行的前一行插入文本
     sed  ‘1 i hello world’ file 在第1行 的前一行插入hello world
c 修改 ,修改指定行的内容
sed  ‘2 c hello world’  file 将第二行的内容修改为hello world
s 替换,将指定行中的符合要求的文本替换为指定文本
格式:
[address[,address]] s/模式/替换内容/[g] [p] [w  文件]
模式是一个正则表达式
g、p、w为可选内容
g 全部替换,否则只替换每行中第一个符合模式的文本
     p 将选定的行(替换后的)写入标准输出
w 将选定的行(替换后的)写入到标注文件中
sed  's/a\{5,\}/bbbbb/g'  file  将aaaaa替换为bbbbb 
sed  ‘s/hello/bbbbb/g w text’ file  将aaaaa替换为bbbbb
并且将选定的行写入到文件text中
sed    ‘s/hello/&1 world/g’  将hello替换hello world ,$代表搜索字符串

l   将不显示的字符打印出来
sed  ‘l’  file  
w 将指定行写入到文件中
sed ‘2,5 w h’ text   将2到5行写入到文件h中
y 转换字符
格式   y/字母/字母/
sed ‘y/abc/xyz/’  file
将所有的字母a、b、c分别转换为x、y、z
=打印行号
sed ‘=’ file
! 使得sed命令作用于没有被选中的每一行
sed  ‘3!d’ file 删除除第3行之外的所有行
   sed   ‘/a/!d’ file 删除不含a的所有行
sed   ‘s/a/d/’


在将接下来的几个命令之前,先介绍sed中的两个重要数据空间:hold space和pattern  space;
pattern space(数据空间),首先要了解sed的执行过程,sed首先从输入中获得一行文本,然后将数据存放在pattern space中,然后sed处理pattern space中的数据,然后将处理过的pattern space中的输出.
通过了解以上的sed的工作方式,就可以明白pattern space的作用了。

hold space 是sed中的一个数据暂存区,用来暂存一些数据。

了解了以上的两个数据空间,就可以讲讲下面的几个命令了

g 拷贝数据从 hold space。
G 添加数据从 hold space 到 pattern space 。
h 拷贝数据从 pattern space 至 hold space 。
H 添加资料从 pattern space 至 hold space 。
x 交换 hold space 与 pattern space 内容。



 

阅读(715) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~