在出现的顺序,语言是sed
,awk
,perl
,python
。
该sed
程序是一个流编辑器,旨在将脚本中的操作应用于输入文件的每一行(或更一般而言,应用于指定的行范围)。它的语言基于ed
Unix编辑器,尽管它具有条件等,但是很难处理复杂的任务。您可以用它创造一些小奇迹- 但要花很多钱。但是,当尝试在其权限范围内执行任务时,它可能是最快的程序。(它具有所讨论程序的功能最弱的正则表达式-足以满足许多目的,但肯定不是PCRE- 与Perl兼容的正则表达式)
该awk
程序(以其作者的名字缩写命名- Aho,Weinberger和Kernighan)最初是用于格式化报告的工具。它可以用作汤sed
。在最新版本中,它在计算上是完整的。它使用了一个有趣的想法- 该程序基于“模式匹配”和“模式匹配时采取的动作”。这些模式非常强大(扩展正则表达式)。动作的语言类似于C。的主要功能之一awk
是它将输入自动分为记录,每个记录又分为字段。
Perl的一部分是awk杀手和sed杀手。提供它的程序中的两个a2p
和s2p
转换awk
脚本和sed
脚本转换为Perl。Perl是下一代脚本语言中最早的一种(Tcl / Tk可能声称是首要的)。它具有功能强大的集成正则表达式处理功能,并且语言功能强大得多。它提供对几乎所有系统调用的访问,并具有CPAN模块的可扩展性。(既不是可扩展的,awk
也不sed
是可扩展的。)Perl的座右铭之一是“ TMTOWTDI-做到这一点的方法不止一种”(发音为“ tim-toady”)。Perl具有“对象”,但它不仅仅是语言的基本组成部分,而是附加组件。
Python是最后编写的,可能部分是对Perl的反应。它具有一些有趣的句法概念(缩进以指示级别- 无花括号或等效项)。从根本上说,它比Perl更面向对象。它与Perl一样可扩展。
OK-什么时候使用每个?
我不知道Perl可以做Python无法做到的任何事情,反之亦然。两者之间的选择将取决于其他因素。我在没有Python之前就学习了Perl,所以我倾向于使用它。Python的语法较少,而且通常更易于学习。Perl 6上市后,将是一个引人入胜的发展。
(请注意,尤其是Perl和Python的“概述”还很不完整;整本书都可以写成该主题。)