您的当前位置:首页高级 UNIX 工具sed

高级 UNIX 工具sed

来源:小侦探旅游网


高级 UNIX 工具(1)----sed

有很多专门的书籍来介绍awk和grep,通常在这些书中,只是简要的介绍grep,因为awk在很多方面都是来源于sed和grep的,另外,在awk,sed和grep中,使用正则表达式(用于模式匹配)的方法也是类似的.

首先,正则表达式中应该注意的事项:

(1)正则表达式与shell使用的文件匹配模式不同.

(2)用单引号 ' 表示正则表达式.

在UNIX系统中,许多编辑工作都是用vi来完成的,因为vi是UNIX系统上典型的编辑器,在很多时候,并不必须启动vi,您可能正在写一个shell程序,或用管道在进程之间传递信息,此时需要以非交互式的方式来编辑,而sed在这时候就很有作用了.sed的名字来源于stream editor(流编辑器),是个过滤文本的工具.

在使用sed编辑文件时,可以指定文件名,或从标准输入中得到输入.sed每次读一行,并对每行作指定的编辑工作.同样可以指定特定的行号,供sed进行编辑.

sed的许多用法与ed相同.

可以用下面两种方式调用sed:

sed [-n][-e] 'command' filename(s)

sed [-n] -f scriptfile filename(s)

sed的第一种格式用于在命令行中执行命令.默认情况下,sed将显示所有行,-n 表示只需要打印p命令指定的行.第二种格式允许指定一个或多个包含编辑命令的脚本.下面是sed的两种不同格式中的三个选项进行总结:

-n 只打印用p命令指定的行

-e command -e后的参数是一个编辑命令

-f filename -f后的参数是包含编辑命令的文件

下面看几个例子:

sed -n 16,18p passwd.test 打印passwd.test的16到18行.

sed 16,18d passwd.test 删除passwd.test的16到18行.

sed '/bsh/ d' passwd.test 删除包含bsh的行.

sed '/bsh/ ld' passwd.test 删除除bsh行以外的行

前面仅仅用了sed中的一些很表面的命令,下面总结了sed的命令:

命令 说明

a 添加文本

b 转移到标签处

c 用文本替换行

d 删除当前文本缓冲区

i 插入文本

P 从模式空间开始打印,知道出现新行

r 读入模式

s 替换模式

y 转换字符

因篇幅问题不能全部显示,请点此查看更多更全内容