sed用法入门

来源:互联网 发布:福特嘉年华轮毂15数据 编辑:程序博客网 时间:2024/05/16 09:31

文章出处:http://www.yuanma.org/data/2008/0818/article_3137.htm

    sed(stream editor)是一个非交互性文本流编辑器。它编辑文件或标准输入导出的文本拷贝。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                     表示行号范围从x到y,如2,5表示从第2行到第5行

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

???以下部分未实践

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

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

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

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