快速业务通道

Linux Shell 基本概念及编程(6)

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-03-24

Sed是一个编辑器,可能有人会奇怪,不是命令吗?实际上它是一个非交互式,它的功能可以达到VI、EX的大部分功能.有些人可能会不信,不过你学习一下,就会发现它功能确实强大,它不等于Grep,Grep只能显示文件内容,不能编辑文件,但sed可以.使用sed在一些脚本中动态修改某些文件非常有用,不需要使用CAT,然后再写.常用的LINUX SED版本是FSF的自由软件.

[windriver@windriver-machine ltest]$ sed --version
GNU sed version 4.1.5
Copyright (C) 2003 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,
to the extent permitted by law.
[windriver@windriver-machine ltest]$

Sed的工作方式如下图:

从这个图中可以看出SED是一行一行的读入到缓冲区,然后对缓冲区进行操作,这些操作就是SED的选项,经过这些操作之后,显示到屏幕或者写回到文件中.

通过前面的正则表达式学习,我们进行SED学习就非常简单,SED里面的正则表达式是相同的.SED不同于grep之外在于SED是一行一行处理文件的,它可以对行号进行定位,同时它除了一些选项参数之外,它有一些自己特定的操作,就是命令. 因此,对SED,我们需要记住的两件事,就是它有Address和COMMAND 两大特性.

sed的一些常用命令格式如下表所示:

命令 功能
a\ 在当前行后添加一行或多行
c\ 用新文件替换当前行
d 删除当前行
i\ 在当前行之前插入一行
h 把模式空间的内容复制到缓冲区中
H 把模式空间的内容追加到缓冲区中
g 取出缓冲区中的内容 ,拷到模式空间中,是替换一行
G 取出缓冲区中的内容 ,追加到模式空间中的一行
l 列出所有非打印字符
p 打印行
n 读取下一个输入行,并且用新的命令来处理这个新行
q 退出
! 将命令应用到非指定行
s 读取行,并将一个字符串替换成另一个字符串.
r 读入新文件内容

sed针对s命令,还要附带定些标签.如下表所示:

g 在一个行中全局替换
p 打印行
w 将行写到一个文件中
x 将缓冲区与模式空间中内容交换
y 在不用正则表达式时,将一个字符转成另外一个字符

Sed 还有一些选项标记如下:

选项 功能
-e 允许多行编辑
-f 后面跟sed脚本文件
-n 取消缺省输出
-i 编辑修改后直接作用到原文件

[windriver@windriver-machine ltest]$ sed ''1,3d'' datafile
southern SO Suan chin 5.1 .95 4 15
southeast SE Patricia 4.0 .7 4 17
eastern EA TB Savage 4.4 .84 5 20
northeast NE AM Main Jr. 5.1 .94 3 13
north NO Margot Weber 4.5 .89 5 9
central CT Ann Stephens 5.7 .94 5 13
[windriver@windriver-machine ltest]$ sed ''/SO/d'' datafile
northwest NW Charles Main 3.0 .90 3 34
western WE Sharon Gray 5.3 .97 5 23
southwest SW Lewi

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号