揭开sed和awk的秘密

ZDNet软件频道 时间:2002-10-24 作者:BUILDER.COM |  我要评论()
本文关键词:
如果你经常使用正则表达式(regular expression),那么一定熟悉UNIX的两个文本工具:sed和awk。我将在本文中介绍sed和awk的基本知识,进一步的知识将在以后的几篇文章中阐述。
如果你经常使用正则表达式(regular expression),那么一定熟悉UNIX的两个文本工具:sed和awk。这两个工具很易学,而且都对模式匹配(patten match*译者注:这里的意思应该是给定若干的条件,对符合条件的对象进行预定的处理,也可以说是条件匹配*)很有用。Sed是流编辑器;它由命令simple ed得名;awk是一种编程语言,它的名字是它的三个开发者名字(Aho、Weinberger和Kernighan)的首字母组合得到的。我将在本文中介绍sed和awk的基本知识,进一步的知识将在以后的几篇文章中阐述。

Sed和awk都很胜任自动单调的(automating monotonous)文本编辑任务,该任务一般在文本编辑器用交互方式完成的。Sed和awk都是基于流的,也就是说它们的输入来自文本文件中——一次得到一行——然后产生标准输出。

Sed主要用于对单个或多个文件的重复编辑。Awk,做为一种编程语言,可以用来处理结构化的数据,然后产生格式化的报告。Sed和awk都可以像外壳脚本(shell script)那样被执行;每一个动作都是顺序运行的。Sed脚本通常用于简单任务,如完成条目(如从一个或者一系列文件中获取的方法的名字)的连接。Awk更适合完成复杂的任务,如重新格式化数据或建立定制报告(custom report)。

Awk是一个完整的编程语言,它的作用不限于sed那样的文本编辑器。Awk擅长从系统记录(system log)或来自数据库(该数据库基于文本)的数据来生成报告。然而,为了发挥awk的用处,数据必须是结构化的,这是awk本身所决定的。

表A

sed

awk

  • Double/triple-space a file
  • 转化DOS/UNIX 的新行(newline)
  • 删除前后的空格
  • 在所有/全部行上进行取代操作
  • 删除连续的空行
  • 删除文件开头和结尾的空行
  • 管理小的、个人的数据库
  • 产生报告
  • 验证数据
  • 生成下标、执行其它文档预备任务
  • 试验算法,这些算法稍后可以由其它语言实现
  • 处理UNIX命令的结果
  • 更合理地处理命令行的参数

Sed和awk的常见用法

Sed与awk使用类似的语法,这就简化了对它们的学习过程。Sed程序由命令行组成,而awk程序是由编程语句和函数组成的。


正则表达式被广泛使用,所以我推荐你阅读文章
揭开正则表达式语法的秘密》以获得关于正则表达式(RE)的背景知识。

百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134