当前位置: 首页 >> 程序设计 >> SED用法入门手册
 

SED用法入门手册

作者:      来源:zz     发表时间:2008-08-18     浏览次数:      字号:    

参考资料

*《Automating UNIX and Linux Administration》之 “A.5 The sed Stream Editor

*《LINUXUNIX SHELL编程指南》第10“SED介绍

*《AIX命令参考大全》sed 命令

 sed 用法介绍

 

sed是一个非交互性文本流编辑器。它编辑文件或标准输入导出的文本拷贝。Sed可以随意编辑小或大的文件,有许多sed命令用来编辑、删除,并允许做这项工作时不在现场。sed一次性处理所有改变,因而变得很有效,对用户来讲,最重要的是节省了时间。

 

这里设计的主要内容有:

抽取域。
匹配正则表达式。
比较域。
增加、附加、替换。
基本的sed命令和一行脚本。

 

       无论命令是什么, sed并不与初始化文件打交道,它操作的只是一个拷贝,然后所有的改动如果没有重定向到一个文件,将输出到屏幕。

       因为sed是一个非交互性编辑器,必须通过行号或正则表达式指定要改变的文本行。

       sed 命令使用两个工作空间来保留修改的行:保留选定行的模式空间和暂时存储行的保留空间。

       sed 子命令的一般格式如下:

[address-range] function[modifiers]

       Sed的语法格式:

sed [  -n ] Script [ File ... ]

sed [  -n ] [  -e Script ] ... [  -f ScriptFile ] ... [ File ... ]

      

 

 

 

1 sed怎样读取数据

 

sed从文件的一个文本行或从标准输入的几种格式中读取数据,将之拷贝到一个编辑缓冲区,然后读命令行或脚本的第一条命令,并使用这些命令查找模式或定位行号编辑它。重复此过程直到命令结束。

 

2 调用sed

 

调用sed有三种方式:在命令行键入命令;将sed命令插入脚本文件,然后调用sed;将sed命令插入脚本文件,并使sed脚本可执行。

 

使用sed命令行格式为:

代码:

sed [选项] sed命令输入文件。

 

记住在命令行使用sed命令时,实际命令要加单引号。sed也允许加双引号。

 

使用sed脚本文件,格式为:

代码:

sed [选项] -f sed脚本文件输入文件

 

 

要使用第一行具有sed命令解释器的sed脚本文件,其格式为:

代码:

sed脚本文件[选项] 输入文件

 

 

不管是使用shell命令行方式或脚本文件方式,如果没有指定输入文件, sed从标准输入中接受输入,一般是键盘或重定向结果。

 

 

sed选项如下:

n 不打印;sed不写编辑行到标准输出,缺省为打印所有行(编辑和未编辑)。p命令可以用来打印编辑行。

c 下一命令是编辑命令。使用多项编辑时加入此选项。如果只用到一条sed命令,此选项无用,但指定它也没有关系。

f 如果正在调用sed脚本文件,使用此选项。此选项通知sed一个脚本文件支持所有的sed命令,例如:sed -f myscript.sed input_file,这里myscript.sed即为支持sed命令的文件。

 

2.1 保存sed输出

由于不接触初始化文件,如果想要保存改动内容,简单地将所有输出重定向到一个文件即可。下面的例子重定向sed命令的所有输出至文件‘myoutfile’,当对结果很满意时使用这种方法。

代码:

$sed 'some-sed-commands' input-file > myoutfile

 

 

2.2 使用sed在文件中查询文本的方式

sed浏览输入文件时,缺省从第一行开始,有两种方式定位文本:

引用:

1) 使用行号,可以是一个简单数字,或是一个行号范围。

2) 使用正则表达式

 

 

下面是使用sed定位文本的一些方式。

 

代码:

x                          x为一行号,如1

x,y                       表示行号范围从xy,如25表示从第2行到第5

/pattern/                查询包含模式的行。例如/disk//[a-z]/

―――以下部分未实践

/pattern/pattern/   查询包含两个模式的行。例如/disk/disks/

/pattern/,x              在给定行号上查询包含模式的行。如/disk/,3

x,/pattern/ 通过行号和模式查询匹配行。3 . / v d u /

x,y! 查询不包含指定行号xy的行。1 , 2 !

 

 

实例文档如下:

# cat sed_case

ssh host1 'command1'

ssh host1 'command2'

ssh host2 'command3'  ssh  and ssh1 and ssh2

 

*打印文件第一行,sed命令中一般都要包含p命令用来打印。

# sed -n '1p' sed_case

ssh host1 'command1'

<!--[if !supportLists]-->     <!--[endif]-->打印文件第13

 

# sed -n '1,3p' sed_case

ssh host1 'command1'

ssh host1 'command2'

ssh host2 'command3'  ssh  and ssh1 and ssh2

 

<!--[if !supportLists]-->     <!--[endif]-->查找文件中包含and的行,并打印出来。

sed -n '/\ and/p' sed_case

ssh host2 'command3'  ssh  and ssh1 and ssh2 ssh host1 'command2'

 

2.3 基本sed编辑命令

 

代码:

sed编辑命令

p 打印匹配行

= 显示文件行号

a \ 在定位行号后附加新文本信息

i \ 在定位行号后插入新文本信息

d 删除定位行

c \ 用新文本替换定位文本

s 使用替换模式替换相应模式

r 从另一个文件中读文本

w 写文本到一个文件

q 第一个模式匹配完成后推出或立即推出

l 显示与八进制A S C I I代码等价的控制字符

{ } 在定位行执行的命令组

n 从另一个文件中读文本下一行,并附加在下一行

g 将模式2粘贴到/pattern n/

y 传送字符

n 延续到下一输入行;允许跨行的模式匹配语句

   

[1] [2]

编辑 webmaster

 
 
 
评论更多>>
 
 
发表
 
姓名: QQ:
性别: MSN:
E-mail: 主页:
评分: 1 2 3 4 5
评论内容:
验证码:
  
  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。
  •