sed & awk 概述

Posted kelamoyujuzhen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sed & awk 概述相关的知识,希望对你有一定的参考价值。

概述

 

一般情况下,从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 概述的主要内容,如果未能解决你的问题,请参考以下文章

Shell学习:sed & gawk

Shell学习:sed & gawk

Shell学习:sed & gawk

sed用法

详解Shell脚本:sed命令工具 ,awk命令工具

AWK