Chinaunix首页 | 论坛 | 博客
  • 博客访问: 516657
  • 博文数量: 93
  • 博客积分: 2479
  • 博客等级: 大尉
  • 技术积分: 1008
  • 用 户 组: 普通用户
  • 注册时间: 2007-11-07 11:59
文章分类

全部博文(93)

文章存档

2012年(2)

2011年(41)

2010年(24)

2009年(21)

2008年(5)

分类:

2009-04-07 13:05:13

sed
sed 是一种几乎包括在所有 UNIX 平台(包括 Linux)的轻量级流编辑器。sed 有许多很好的特性。首先,它相当小巧,通常要比您所喜爱的脚本语言小很多倍。其次,因为 sed 是一种 流编辑器,所以,它可以对从如管道这样的标准输入接收的数据进行编辑。因此,无需将要编辑的数据存储在磁盘上的文件中。因为可以轻易将数据管道输出到 sed,所以,将 sed 用作强大的 shell 脚本中长而复杂的管道很容易。
sed的基本命令格式: sed 参数  'sed 命令' input-files
sed的基本参数:
-n 关闭原始内容输出
-p 是复制(同时也会显示原始行,若不想显示原始行,可加参数n)
-r  使用扩展正则表达式
-h  复制进模式缓冲区,以一行为单位(以后的总会将之前的一行覆盖)类似黑熊掰棒子
-H  复制到缓存区,与h不同的是,不覆盖之前的行。
-i   保存修改至原文件
'$G'  将暂存区的数据取出,放到文件的最后一行
'$g'   是使用暂存区的数据,替换掉文件的最后一行。
-e    是多步操作时用到的一个参数。当执行多个sed命令的时候会用到,
 比如:
       我想复制passwd的1,5行内容到文件末尾。这里我们需要执行二步操作
 1. 复制1,5行;
 2. 将暂存区的内容放到passwd1末尾
        这样可能显得比较烦索些,如果我们用-e事情就会变得很简单:
 sed -e '1,5H'  -e '$G' passwd1
 这就是-e的作用。
-d    删除
下面的一些参数,主要用于正则表达式中
a ----   在选定行的下面,插入字符串;
i-----    在选定行的上面,插入字符串;
r ----    将指定文件,读取到选定行的后面;
w----    将选定行(或者叫匹配正则表达式的行)重定向到一个新文件;
c----      将匹配的行替换成要修改的内容
sed -e '/^#/d' /etc/services | more
sed -n '/ssh/w newfile' passwd1
sed  '/pcap/i /verygood' passwd1
sed -e '/juan/a verygood' passwd1
补充::::
其中还有一个很重要参数:s----替换
其格式:  's/1/2/'   将每行第一次出现的1全部替换成2.(若想将行中的1全部替换成2,需要加一个参数g)   's/1/2/g' 
阅读(769) | 评论(0) | 转发(0) |
0

上一篇:awk的应用(续)

下一篇:<转> sed实例(一)

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