按照出现的顺序,语言是sed
、awk
、perl
、python
.
sed
程序是一个流编辑器,旨在将脚本中的操作应用于输入文件或多个文件的每一行(或者更一般地,应用于指定的行范围).它的语言是基于Unix编辑器ed
的,虽然它有条件等,但是很难处理复杂的任务.你可以用它创造小小的奇迹--但代价是你头上的头发.然而,在try 其权限范围内的任务时,它可能是最快的程序.(在所讨论的程序中,它的正则表达式功能最弱-足以满足多种用途,但肯定不是与PCRE-Perl兼容的正则表达式)
awk
程序(名字来源于作者的首字母缩写——Aho、Weinberger和Kernighan)最初是一个用于格式化报告的工具.它可以用作增强型sed
;在最近的版本中,它在计算上是完整的.它使用了一个有趣的 idea ——该程序基于"模式匹配"和"模式匹配时采取的行动".这些模式相当强大(扩展正则表达式).操作的语言类似于C.awk
的一个关键特性是,它自动将输入拆分为记录,并将每条记录拆分为字段.
Perl部分是作为awk杀手和sed杀手编写的.它提供的两个程序是a2p
和s2p
,用于将awk
个脚本和sed
个脚本转换为Perl.Perl是最早的下一代脚本语言之一(Tcl/Tk可能会占据主导地位).它具有强大的集成正则表达式处理功能和强大得多的语言.它提供对几乎所有系统调用的访问,并具有CPAN模块的可扩展性.(awk
和sed
都不可扩展.)Perl的格言之一是"TMTOWTDI——有多种方法可以做到"(发音为"tim toady").Perl有"对象",但它更像是一个附加组件,而不是语言的基本部分.
Python是最后编写的,可能部分是对Perl的react .它有一些有趣的语法思想(缩进表示级别——没有大括号或类似功能).它比Perl更基本地面向对象;它和Perl一样可扩展.
好的,什么时候使用?
我不知道Perl能做Python做不到的事情,反之亦然.两者之间的 Select 将取决于其他因素.在Python出现之前,我就学会了Perl,所以我倾向于使用它.Python的附加语法较少,而且通常更容易学习.Perl 6一旦面世,将是一个引人入胜的发展.
(请注意,尤其是Perl和Python的"概述"非常不完整;整本书都可能是关于这个主题的.)