它们之间的主要区别是什么?在哪些典型场景中使用每种语言更好?

推荐答案

按照出现的顺序,语言是sedawkperlpython.

sed程序是一个流编辑器,旨在将脚本中的操作应用于输入文件或多个文件的每一行(或者更一般地,应用于指定的行范围).它的语言是基于Unix编辑器ed的,虽然它有条件等,但是很难处理复杂的任务.你可以用它创造小小的奇迹--但代价是你头上的头发.然而,在try 其权限范围内的任务时,它可能是最快的程序.(在所讨论的程序中,它的正则表达式功能最弱-足以满足多种用途,但肯定不是与PCRE-Perl兼容的正则表达式)

awk程序(名字来源于作者的首字母缩写——Aho、Weinberger和Kernighan)最初是一个用于格式化报告的工具.它可以用作增强型sed;在最近的版本中,它在计算上是完整的.它使用了一个有趣的 idea ——该程序基于"模式匹配"和"模式匹配时采取的行动".这些模式相当强大(扩展正则表达式).操作的语言类似于C.awk的一个关键特性是,它自动将输入拆分为记录,并将每条记录拆分为字段.

Perl部分是作为awk杀手和sed杀手编写的.它提供的两个程序是a2ps2p,用于将awk个脚本和sed个脚本转换为Perl.Perl是最早的下一代脚本语言之一(Tcl/Tk可能会占据主导地位).它具有强大的集成正则表达式处理功能和强大得多的语言.它提供对几乎所有系统调用的访问,并具有CPAN模块的可扩展性.(awksed都不可扩展.)Perl的格言之一是"TMTOWTDI——有多种方法可以做到"(发音为"tim toady").Perl有"对象",但它更像是一个附加组件,而不是语言的基本部分.

Python是最后编写的,可能部分是对Perl的react .它有一些有趣的语法思想(缩进表示级别——没有大括号或类似功能).它比Perl更基本地面向对象;它和Perl一样可扩展.

好的,什么时候使用?

  • Sed——当你需要对文件进行简单的文本转换时.
  • Awk——当你只需要简单的格式化和数据汇总或转换时.
  • Perl——适用于几乎任何任务,尤其是当任务需要复杂的正则表达式时.
  • Python—用于可以使用Perl执行的相同任务.

我不知道Perl能做Python做不到的事情,反之亦然.两者之间的 Select 将取决于其他因素.在Python出现之前,我就学会了Perl,所以我倾向于使用它.Python的附加语法较少,而且通常更容易学习.Perl 6一旦面世,将是一个引人入胜的发展.

(请注意,尤其是Perl和Python的"概述"非常不完整;整本书都可能是关于这个主题的.)

Python相关问答推荐

如何从FDaGrid实例中删除某些函数?

Python daskValue错误:无法识别的区块管理器dask -必须是以下之一:[]

' osmnx.shortest_track '返回有效源 node 和目标 node 的'无'

Pandas:将多级列名改为一级

Tkinter菜单自发添加额外项目

如何在Python中使用另一个数据框更改列值(列表)

处理Gekko的非最优解

根据客户端是否正在传输响应来更改基于Flask的API的行为

如何在验证文本列表时使正则表达式无序?

我什么时候应该使用帆布和标签?

当输入是字典时,`pandas. concat`如何工作?

如何获得满足掩码条件的第一行的索引?

Django.core.exceptions.SynchronousOnlyOperation您不能从异步上下文中调用它-请使用线程或SYNC_TO_ASYNC

分解polars DataFrame列而不重复其他列值

设置索引值每隔17行左右更改的索引

替换包含Python DataFrame中的值的<;

使用xlsxWriter在EXCEL中为数据帧的各行上色

如何关联来自两个Pandas DataFrame列的列表项?

使用pythonminidom过滤XML文件

有什么方法可以在不对多索引DataFrame的列进行排序的情况下避免词法排序警告吗?