Perl 是比 awk 更好的文本处理工具吗

Flo*_*ris 5 awk perl

这个问题的灵感来自关于 stackoverflow 的讨论——特别是参见Ed Morton's answer下的评论线程。

我认为这是我可以获得明确答案的网站:

在什么情况下您会建议使用 Perl 而不是 awk 来处理复杂的文本(文件)处理任务?

我正在专门寻找 Perl 的例子

  1. 使awk无法实现的事情成为可能
  2. 使特定操作的实施更有效(更快)
  3. 导致脚本更具可读性/更易于维护

我承认这有可能成为“意见/讨论/宗教”类型的问题 - 但我希望上述三个标准能够客观地比较这两种工具的好处。还要认识到,我是作为一个在 'nix 方面拥有丰富经验的人来回答这个问题的,但正式培训为零;我“在需要时学习”,我想知道是否有理由让我深入学习 Perl。

根据一些评论进行更新,我想扩展这个问题:

是否有您经常使用的特定 Perl 库,并且让您通过 awk 使用 Perl 来解决一类问题?

小智 3

Perl(病态折衷垃圾列表程序)是最年轻的软件,并试图提供来自sedgrep、 和 的功能awk。有些系统仍然不使用perl,所以你仍然需要使用awk.

如果您有小而短的脚本,那么awk速度会更快,因为它不使用太多 RAM。但现在这个问题已经不重要了。

Perl 的优点是使用庞大的库,例如 bignum:

perl -Mbignum=p,-50 -e 'print 7 / 17 * 2 ** 1024'
74022658494330655024147860797195136090151993250565247519682704773906208395466727932632852195642113248713093779803824795490433138400407947242956458140922662778116418363136978425944182630002816083132493908286100432062606400696408888454667905350718062803228883801119937832891791040171399808266545264132627555599.49778888545891662481444755946205525353595725152256
Run Code Online (Sandbox Code Playgroud)

代码的可读性始终是编写者的一个属性。您可以编写不依赖于您使用的语言的可读性良好的代码。