当前位置: 首页 > 面试题库 >

Perl,Python,AWK和sed有什么区别?

东郭子默
2023-03-14
问题内容

只想知道它们之间的主要区别是什么?以及每种语言的功能(最好使用它)。

编辑: 不是“ vs”。就像话题,只是信息。


问题答案:

在出现的顺序,语言是sedawkperlpython

sed程序是一个流编辑器,旨在将脚本中的操作应用于输入文件的每一行(或更一般而言,应用于指定的行范围)。它的语言基于edUnix编辑器,尽管它具有条件等,但是很难处理复杂的任务。您可以用它创造一些小奇迹-
但要花很多钱。但是,当尝试在其权限范围内执行任务时,它可能是最快的程序。(它具有所讨论程序的功能最弱的正则表达式-足以满足许多目的,但肯定不是PCRE-
与Perl兼容的正则表达式)

awk程序(以其作者的名字缩写命名-
Aho,Weinberger和Kernighan)最初是用于格式化报告的工具。它可以用作汤sed。在最新版本中,它在计算上是完整的。它使用了一个有趣的想法-
该程序基于“模式匹配”和“模式匹配时采取的动作”。这些模式非常强大(扩展正则表达式)。动作的语言类似于C。的主要功能之一awk是它将输入自动分为记录,每个记录又分为字段。

Perl的一部分是awk杀手和sed杀手。提供它的程序中的两个a2ps2p转换awk脚本和sed脚本转换为Perl。Perl是下一代脚本语言中最早的一种(Tcl
/
Tk可能声称是首要的)。它具有功能强大的集成正则表达式处理功能,并且语言功能强大得多。它提供对几乎所有系统调用的访问,并具有CPAN模块的可扩展性。(既不是可扩展的,awk也不sed是可扩展的。)Perl的座右铭之一是“
TMTOWTDI-做到这一点的方法不止一种”(发音为“ tim-toady”)。Perl具有“对象”,但它不仅仅是语言的基本组成部分,而是附加组件。

Python是最后编写的,可能部分是对Perl的反应。它具有一些有趣的句法概念(缩进以指示级别-
无花括号或等效项)。从根本上说,它比Perl更面向对象。它与Perl一样可扩展。

OK-什么时候使用每个?

  • Sed-需要对文件进行简单文本转换时。
  • Awk-当您只需要简单的格式设置,数据汇总和转换时。
  • Perl-适用于几乎所有任务,尤其是当任务需要复杂的正则表达式时。
  • Python-完成与Perl相同的任务。

我不知道Perl可以做Python无法做到的任何事情,反之亦然。两者之间的选择将取决于其他因素。我在没有Python之前就学习了Perl,所以我倾向于使用它。Python的语法较少,而且通常更易于学习。Perl
6上市后,将是一个引人入胜的发展。

(请注意,尤其是Perl和Python的“概述”还很不完整;整本书都可以写成该主题。)



 类似资料:
  • 问题内容: 我正在处理一些旧代码,发现曾经使用过 但是我现在尝试 似乎在做同样的事情,还是这样做?我有点记得我这样做是有原因的,但是我不记得了,做“ man sed”并没有帮助,因为他们对-E仅一无所知- e对以太并没有多大意义。 我以为-e表示它将与正则表达式匹配… 问题答案: 从源代码开始,是与BSD sed兼容的未记录的选项。 从手册开始,在BSD中sed用于支持扩展的正则表达式。

  • 我正在尝试向一个大约有500行的文件中添加几列,但现在让我们假设我使用的是一个有500行的文件。 我有两个命令。一个sed命令和一个awk命令

  • 问题内容: 在支持哪些正则表达式方面,perl和java有什么区别? 这个问题仅针对正则表达式,并且特别排除 了 正则表达式的用法差异(即使用正则表达式的可用函数/方法)以及语言之间的语法差异,例如Java要求转义反斜杠等。 特别令人感兴趣的是Java对可变长度后向查找的部分/偶然支持。 问题答案: “与Perl 5的比较”部分列出了许多差异。例如,Java不支持条件正则表达式。为此,您需要使用一

  • 问题内容: 我正在使用读取csv文件的两列,然后将值分配给字典。这些列包含数字和字母字符串。有时在某些情况下单元格为空。在我看来,应读取但应分配该字典条目的值。当然,由于它具有空值,因此更能描述一个空单元格,而nan只是说读取的值不是数字。 我的理解正确吗,和之间有什么区别?为什么分配而不是? 另外,我的字典检查是否有任何空单元格一直在使用: 但这给了我一个错误,说我不能使用此检查v。我猜这是因为

  • 问题内容: 和之间有适用的区别吗? 从Python文档中: :返回字典的(键,值)对列表的副本。 :在字典的(键,值)对上返回迭代器。 如果我运行下面的代码,每个似乎都返回对同一对象的引用。我缺少任何细微的差异吗? 输出: 问题答案: 这是演变的一部分。 最初,构建了一个真正的元组列表,并将其返回。这可能会占用大量额外的内存。 然后,一般将生成器引入该语言,然后将该方法重新实现为名为的迭代器-生成

  • 问题内容: 我知道是软件包的软件包管理器。但是,我看到网站上的安装用于安装IPython。 我可以用来安装吗?我已经拥有了为什么还要用作另一个python软件包管理器pip? 和之间有什么区别? 问题答案: 引用来自Conda博客: 参与python世界已经很长时间了,我们都知道,,但是这些工具不能满足我们所有的特定要求。主要问题是它们专注于Python,而忽略了非Python库依赖项,例如HDF