码迷,mamicode.com
首页 > 其他好文 > 详细

sed & awk 概述

时间:2018-06-14 21:46:13      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:起源   stream   不同的   解释   格式   c语言   语言   结构   报表   

概述

 

一般情况下,从grep到sed和awk的学习过程是很自然的。sed和awk是一般用户、程序员和系统管理员们处理文本文件的有力工具。sed的名字来源于其功能,它是个字符流编辑器(stream editor),可以很好地完成对多个文件的一系列编辑工作。awk的名字来源于它的开发人Aho、Weinberger和Kernighan,它是一种程序设计语言,非常适合结构化数据的处理和格式化报表的生成。

 

sed 与 awk 共性

 

它们都使用相似的语法来调用。
它们都是面向字符流的,都是从文本文件中一次一行地读取输入,并将输出直接送到标准输出端。
它们都使用正则表达式进行模式匹配。
它们允许用户在脚本中指定指令。

 

它们有如此多的共同点,原因之是它们都起源于相同的行编辑器—ed。sed和awk的区别在于它们控制所做的工作时所用的指令不同。

 

sed

sed是作为特殊目的的编辑器而创建的,用于专门执行脚本;与ed不同,它不能交互地使用。sed与ed的主要区别在于它是面向字符流的。默认情况下,到sed的所有输入都会经过相应的处理,并转为标准输出。输入文件本身不发生改变。如果确实想改变输入文件,一般使用shell机制进行输出重定向,当你对所做的编辑工作满意时,用修改后的版本代替最初的文件。

sed的字符流定位对如何应用寻址有重要影响。sed遍历文件,每次一行,这样每一行都成为当前行,而且每一行都应用相同的命令。sed命令是隐式的全局命令

sed中s/regular/complex/   等价于  ed中  g/regular/s//complex/

理解ed中的当前行寻址与sed中全局行寻址之间的区别是很重要的。在ed中,使用寻址扩大受命令影响的行数;在sed中,使用寻址限制受命令影响的行数。

awk

awk是作为可编程的编辑器而开发的,同sed一样,它也是面向字符流的,并且解释编辑命令的脚本。awk与sed不同的地方是它废弃了行编辑器的命令集。它提供了仿效C语言的程序设计语言,例如,print语句取代p命令;但延续了寻址的概念,例如:
/regular/{print}

sed & awk 概述

标签:起源   stream   不同的   解释   格式   c语言   语言   结构   报表   

原文地址:https://www.cnblogs.com/kelamoyujuzhen/p/9185032.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!