概述html
通常状况下,从grep到sed和awk的学习过程是很天然的。sed和awk是通常用户、程序员和系统管理员们处理文本文件的有力工具。程序员
sed的名字来源于其功能,它是个字符流编辑器(stream editor),能够很好地完成对多个文件的一系列编辑工做。正则表达式
awk的名字来源于它的开发人Aho、Weinberger和Kernighan,它是一种程序设计语言,很是适合结构化数据的处理和格式化报表的生成。数组
sed 与 awk 共性编辑器
它们都使用类似的语法来调用。
它们都是面向字符流的,都是从文本文件中一次一行地读取输入,并将输出直接送到标准输出端。
它们都使用正则表达式进行模式匹配。
它们容许用户在脚本中指定指令。函数
它们有如此多的共同点,缘由之是它们都起源于相同的行编辑器—ed。sed和awk的区别在于它们控制所作的工做时所用的指令不一样。工具
语法学习
command [toptions] script_filenamespa
输入:stdin 或 文件设计
输出:stdout 或 文件
禁止:输入输出是同一个文件
参数:sed和awk有区别,后面单独介绍
脚本:当命令较少时,能够单独输入,命令多时就须要写道脚本文件中。
sed & awk指令组成
工做流程
每一个程序每次从输入文件中读取一个输入行,生成该输入行的备份,而且对该备份执行脚本中指定的指令。所以,对输入行所作的改动不会影响真正的输入文件。
当读取输入的每行时,程序读取脚本中的第一个指令并检测当前行的模式。若是没有匹配,这个过程被忽略并读取下一个指令。若是有一个匹配,那么执行过程当中指定的一个或多个动做。读取全部的指令,而不仅是读取与输入行匹配的第一条指令。当全部可用指令被解释并应用于单个行后,sed输出该行并循环处理每一个输入行。另外一方面,awk不自动输出行,脚本中的指令控制awk最终所作的事情。在sed和awk中过程的内容有很大不一样。在sed中,过程由相似于行编辑器中使用的那些编辑命令组成。大部分命令由单个字母组成。在awk中,过程由程序设计语句和函数组成。过程必须用大括号括起。