Unix sed流编辑器简介 带你入门sed
发布:smiling 来源: PHP粉丝网 添加日期:2015-04-22 11:22:02 浏览: 评论:0
本教程我们来讲讲Unix下的一个非交互式的流编辑器sed介绍,主要包括sed是什么,sed工作机制等Unix sed理论知识,下一篇我们来讲实用.
已经看了一段时间的Linux Shell编程了,也能完成一些基本的使用,为了加深理解,恰好看到了The Unix School的一个sed&awk教程,不是简单的命令参数堆积,而是一个相当实用的系列,因此,希望能在几天内完成翻译.翻译过程不会逐字翻译,会穿插一些注释,包括自己的一些理解和其他的一些引用,作为开篇,简单说一下sed的工作机制,对后面的理解会有很大帮助.
sed是什么:
sed是一个非交互式的流编辑器(stream editor),所谓非交互式,是指使用sed只能在命令行下输入编辑命令来编辑文本,然后在屏幕上查看输出,而所谓流编辑器,是指sed每次只从文件(或输入)读入一行,然后对该行进行指定的处理,并将结果输出到屏幕(除非取消了屏幕输出又没有显式地使用打印命令),接着读入下一行,整个文件像流水一样被逐行处理然后逐行输出(via Walk in Mindfields).
sed工作机制:
sed维护两个缓冲区,pattern space和hold space,命令开始执行之前都为空.
pattern space缓冲区用于临时保存每次读取的一行的内容,大部分的匹配和替换等等操作都是针对pattern space中的内容进行的,因此不会对输入文件有任何影响,而hold space则作为后备缓冲区使用,除非指定了一些特殊的命令(例如D删除命令),否则pattern space中的内容会在处理完一行之后清空,但hold space中的内容在处理完每一行时不会被删除.
也就是说pattern space相当于我们的内存,hold space相当于硬盘,处理的时候在内存里,处理过的就放回硬盘,这是我的理解,有一点点不恰当,但是因此一些概念会比较好理解.
具体来说,可以大致分为以下几步.
1.首先,从标准输入流读取一行,移除换行符,然后存入pattern space中.
2.执行指定的命令,每个命令都有一个可选的地址,可以是行号,也可能是一个正则表达式匹配,这个地址作为一个执行命令前的测试,指定了需要对那些行进行操作,当前行只有匹配的情况下才会执行命令.
3.当指定所有的命令都执行完了之后,pattern space内容就被处理过了,sed默认会将pattern space中的内容打印到标准输出中,移除的换行符也会打印出来,本行操作完成.
4.然后sed会读取下一行的内容,再次执行相同的操作,直到行尾.
基本上最基础的理论就差不多了,主要是这个工作机制比较重要,后面从示例中慢慢加深理解.
Tags: Unix sed Unix编辑器
相关文章
- ·详解Unix和Linux操作系统中Cron的用法(2014-02-28)
- ·学习linux/unix编程方法的建议,学习Linux的四个步骤(2014-03-06)
- ·Linux shell学习之:unix/linux shell的发展历程(2014-03-07)
- ·UNIX和Linux Shell正则表达式语法介绍(2014-03-08)
- ·突破极限 解决大硬盘上安装Sco Unix新思路(2014-03-09)
- ·介绍UNIX系统的五种关机方法(2014-03-09)
- ·ODU在Linux和Unix平台下的使用(2014-03-11)
- ·Unix shell 使用 Bash 中的 globstart 选项使用教程(2015-04-21)
- ·Unix平台下如何卸载gdb调试工具?(2015-04-22)
- ·Unix sed如何向文件中增加一行(2015-04-22)
- ·Unix sed编辑器如何替换文件内容(2015-04-22)
- ·Unix sed编辑器如何读写文件操作(2015-04-22)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)