新城区网站建设,外贸网站模板设计,北京建筑大学研究生招生网,邓亚萍20亿做网站一、grep 主要用于搜索某些字符串#xff1b;sed、awk 用于处理文本#xff1a;
grep基本是以行为单位处理文本的#xff1b; 而awk可以做更细分的处理#xff0c;通过指定分隔符将一行#xff08;一条记录#xff09;划分为多个字段#xff0c;以字段为单位处理文本。…一、grep 主要用于搜索某些字符串sed、awk 用于处理文本
grep基本是以行为单位处理文本的 而awk可以做更细分的处理通过指定分隔符将一行一条记录划分为多个字段以字段为单位处理文本。awk中支持C语法可以有分支条件判断、循环语句等相当于一个小型编程语言。 awk功能比较多是一个编程语言了。 grep功能简单就是一个简单的正则表达式的匹配。 awk的功能依赖于grep。 grep可以理解为主要作用是在一个文件中查找过滤需要的内容。awk不是过滤查找而是文本处理工具是把一个文件处理成你想要的格式。
二、使用awk的三理由 AWK的功能是什么与sed和grep很相似awk是一种样式扫描与处理工具。但其功能却大大强于sed和grep。awk提供了极其强大的功能它几乎可以完成grep和sed所能完成的全部工作同时它还可以可以进行样式装入、流控制、数学运算符、进程控制语句甚至于内置的变量和函数。它具备了一个完整的语言所应具有的几乎所有精美特性。实际上awk的确拥有自己的语言awk程序设计语言awk的三位创建者已将它正式定义为样式扫描和处理语言。 使用awk的第一个理由是基于文本的样式扫描和处理是我们经常做的工作awk所做的工作有些象数据库但与数据库不同的是它处理的是文本文件这些文件没有专门的存储格式普通的人们就能编辑、阅读、理解和处理它们。而数据库文件往往具有特殊的存储格式这使得它们必须用数据库处理程序来处理它们。既然这种类似于数据库的处理工作我们经常会遇到我们就应当找到处理它们的简便易行的方法UNIX有很多这方面的工具例如sed 、grep、sort以及find等等awk是其中十分优秀的一种。 使用awk的第二个理由是awk是一个简单的工具当然这是相对于其强大的功能来说的。的确UNIX有许多优秀的工具例如UNIX天然的开发工具C语言及其延续C就非常的优秀。但相对于它们来说awk完成同样的功能要方便和简捷得多。这首先是因为awk提供了适应多种需要的解决方案从解决简单问题的awk命令行到复杂而精巧的awk程序设计语言这样做的好处是你可以不必用复杂的方法去解决本来很简单的问题。例如你可以用一个命令行解决简单的问题而C不行即使一个再简单的程序C语言也必须经过编写、编译的全过程。其次awk本身是解释执行的这就使得awk程序不必经过编译的过程同时这也使得它与shell script程序能够很好的契合。最后awk本身较C语言简单虽然awk吸收了C语言很多优秀的成分熟悉C语言会对学习awk有很大的帮助但awk本身不须要会使用C语言——一种功能强大但需要大量时间学习才能掌握其技巧的开发工具。 使用awk的第三个理由是awk是一个容易获得的工具。与C和C语言不同awk只有一个文件(/bin/awk)而且几乎每个版本的UNIX都提供各自版本的awk你完全不必费心去想如何获得awk。但C语言却不是这样虽然C语言是UNIX天然的开发工具但这个开发工具却是单独发行的换言之你必须为你的UNIX版本的C语言开发工具单独付费当然使用D版者除外获得并安装它然后你才可以使用它。 基于以上理由再加上awk强大的功能我们有理由说如果你要处理与文本样式扫描相关的工作awk应该是第一选择。在这里有一个可遵循的一般原则如果你用普通的shell工具或shell script有困难的话试试awk,如果awk仍不能解决问题则便用C语言如果C语言仍然失败则移至C。
三、sed是一个非交互性文本流编辑器
sed编辑器按照一次处理 一行的方式来处理文件或者输入并把输出送到屏幕上。你可以在vi和ex/ed编辑器里识别他的命令。sed把当前正在处理的行保存在一个临时缓存里这个缓存叫做模式空间。一但sed完成了对模式空间里的行的处理即对该行执行sed命令就把模式空间的行送到屏幕上除非该命令要删除该行活禁止打印。处理完该行之后从模式空间里删除它然后把下一行读入模式空间进行处理并显示。当输入文件的最后一行处理完后sed终止。通过把每一行存在一个临时缓存里并编辑该行初始文件不会被修改或被破坏。