• 每天进步一点点!

文章分类

推荐网站

常用手册

流编辑器sed(一)【原创】

<<返回

2011-11-29 22:22:56

sed的工作流程

 

sed编辑器逐行处理文件(或输入),并将结果发送到屏幕。sed把当前正在处理的行保存在一个临时缓冲区中,这个缓冲区称为模式空间或临时缓冲。sed处理完模式空间中的行后(即在该行执行完sed后),就把该行发送到屏幕上(除非之前有命令删除这一行或取消打印操作),sed每处理完一行就将其从模式空间中删除,然后将下一行读入模式空间,进行处理或显示。处理完输入文件的最后一行后,sed便结束运行。sed把每一行都存在临时临时缓冲区中,对这个副本进行编辑,所以不会修改或破坏原文件。

 

 

定址

 

定址用于决定那些行用于编辑。地址的形式可以是数字,正则表达式或二者的结合。如果没有指定地址,sed将处理输入文件中的所有行。

如果指定的地址是一个数字,则这个数字代表行号。美元符号可以用来指代输入文件的最后一行。如果给出的是逗号分隔的两个行号,那么需要处理的地址就是这两行之间的范围(包括这两行在内)。范围可以是数字,正则表达式或二者的结合。 

格式:

sed   'command' filename(s)

范例:

sed '1,3d' myfile
#删除myfile的第1~3行
sed -n '/[Ff]iher/p' myfile
#这打印myfile中匹配fishe或Fisher的行

 

sed命令

sed命令告诉sed对指定行做何种操作,包括打印、删除、修改等。

下表列出了命令选项,并说明他们如何控制色的的行为。

 

 命令

 功能

 a\

 在当前行后添加一行或多行。多行时除最后一行外,每行末尾需用“\”续行

 c\

 用此符号后的新文本替换当前行中的文本。多行时除最后一行外,每行末尾需用"\"续行

 i\

 在当前行之前插入文本。多行时除最后一行外,每行末尾需用"\"续行

 d

 删除行

 h

 把模式空间里的内容复制到暂存缓冲区

 H

 把模式空间里的内容追加到暂存缓冲区

 g

 把暂存缓冲区里的内容复制到模式空间,覆盖原有的内容

 G

 把暂存缓冲区的内容追加到模式空间里,追加在原有内容的后面

 l

 列出非打印字符

 p

 打印行

 n

 读入下一输入行,并从下一条命令而不是第一条命令开始对其的处理

 q

 结束或退出sed

 r

 从文件中读取输入行

 !

 对所选行以外的所有行应用命令

 s

 用一个字符串替换另一个

替换标志

 g

 在行内进行全局替换

 w

 将所选的行写入文件

 x

 交换暂存缓冲区与模式空间的内容

 y

 将字符替换为另一字符(不能对正则表达式使用y命令)

 

sed选项

 选项

 功能

 -e

 进行多项编辑,即对输入行应用多条sed命令时使用

 -n

 取消默认的输出

 -f

 指定sed脚本的文件名

 

注:如果需要使用多条命令,或者在某个地址范围内嵌套地址,就必须将命令用花括号括起来,每行只写一条命令,或者用分号分隔同一行上的多条命令。

 

感叹号(!)是用于否定。例如:

sed 'fisher/d' myfile 是删除myfile中,所有包含fisher命令的行。而命令:

sed 'fisher/!d' myfile 则是删除myfile中所有不包含fisher的行。

 

 

文章评论

  • 暂无评论

发表评论

昵称:

内容:

发表评论