学习 Awk 值得吗?

学习 Awk 值得吗?

我精通 bash 脚本,正在学习正则表达式,以及一些 sed 用法。在市面上有这么多替代方案的情况下,学习 awk 是否仍然值得?您有什么看法?

答案1

存在不同的替代方案,并不是因为每个替代方案都可以做同样的事情(尽管对于本地化情况或像 Perl 这样的完整编程语言来说确实如此),而是因为它们可以做不同的事物。

sed 不太适合处理表格数据,而使用纯 bash 处理表格数据通常比人们想象的更麻烦。awk 几乎可以轻而易举地处理表格数据,还可以用于编写小型状态机。花点时间查看 Stack Overflow 上的各种 awk 解决方案,了解它可以做什么。

答案2

我一直使用 awk,尽量避免编写或使用 perl。Perl 想做太多事情,成为一种通用语言,但不幸的是,在我看来,它的语法很糟糕,难以阅读。维护别人编写的 perl 脚本很麻烦,一段时间后,我们自己的脚本也往往如此。

另一方面,awk 的作用范围有限,但目的明确,并且与之配合良好。与 perl 不同,它与 shell 脚本的接口也相对较好。

至于 bash 作为幸存者,如果你问我,我更喜欢 ksh93。

答案3

不管你对 Perl 有什么其他看法,我都很难说它“正在消亡”

既然你对 Awk 和 Perl 进行了比较,你可能有兴趣看看这本书最小 Perl。它展示了 Perl 与各种 Unix/Linux 命令行实用程序的比较。无论您选择什么,它都应该为您提供足够的信息,以便您做出更明智的决定来决定要学习什么。

就我个人而言,我认为有比 Awk 更好的选择,并且只有在以下情况下才会学习它:清楚地这是我手头任务的最佳选择。但话又说回来,我也可以对很多事情说同样的话……

答案4

这取决于您的舒适度。

我是通过 perl 进入 shell 的,因此我习惯使用 perl 来处理复杂的事情。

但是我发现,我做这件事的时间越长,我就越想用 shell 单行代码做更多更复杂的事情,而不是处理“正确”的 perl 脚本的开销。我发现 awk 是处理复杂事情的宝贵工具。

学习所有东西的一点儿永远没有坏处,即使这只足以让你弄清楚这个特定的工具是否适合你的做事方式。

相关内容