按照外观的顺序,语言是sed,awk,perl,python。
sed程序是流编辑器,并且被设计为将来自脚本的动作应用于输入文件的每一行(或者更一般地,应用于指定的行范围)。它的语言基于ed,Unix编辑器,虽然它有条件等,但是很难与复杂的任务一起工作。你可以与它工作小奇迹 – 但是在你头上的头发成本。但是,它可能是在其职权范围内尝试任务时最快的程序。 (它具有所讨论的程序中最不强大的正则表达式 – 适用于许多目的,但肯定不是PCRE – Perl兼容的正则表达式)
awk程序(来自作者的首字母缩写的名字–Aho,Weinberger和Kernighan)是最初用于格式化报告的工具。它可以用作汤羹;在其更新的版本中,它是计算完成的。它使用一个有趣的想法 – 程序是基于“模式匹配”和“模式匹配时采取的行动”。模式是相当强大的(扩展正则表达式)。操作的语言类似于C. awk的一个关键功能是将输入行自动分割为字段。
Perl被部分地写成awk-killer和sed-killer。提供的两个程序是a2p和s2p,用于将awk脚本和sed脚本转换为Perl。 Perl是下一代脚本语言中最早的一种(Tcl / Tk可能声称优先)。它具有强大的集成正则表达式处理与更强大的语言。它提供对几乎所有系统调用的访问,并且具有CPAN模块的可扩展性。 (awk和sed都不可扩展。)Perl的座右铭之一是“TMTOWTDI – 有多种方法”(发音为“tim-toady”)。 Perl有“对象”,但它更多是一个附加组件,而不是语言的基本部分。
Python是最后写的,可能部分作为对Perl的反应。它有一些有趣的句法思想(缩进表示水平 – 没有大括号或等同)。它比Perl更基本的面向对象;它就像Perl一样可扩展。
确定 – 何时使用每个?
> sed – 当你需要对文件进行简单的文本转换。
> awk – 当你只需要简单的格式化和汇总或转换数据。
> perl – 几乎任何任务,但特别是当任务需要复杂的正则表达式时。
> python – 对于可以使用Perl的相同任务。
我不知道任何Perl可以做的Python不能,反之亦然。两者之间的选择将取决于其他因素。我学习了Perl之前有一个Python,所以我倾向于使用它。 Python有更少的accreted语法,通常有点更容易学习。 Perl 6,当它可用时,将是一个迷人的发展。
(请注意,特别是Perl和Python的“概述”是非常不完整的;整本书可以写在这个主题上。)