sed 是否有优于 awk 的功能?

sed 是否有优于 awk 的功能?

最近学习了sed一段时间,感觉很尴尬,因为

  • 需要记住单字母命令(p, a, d, ...)
  • 的概念单身的保留空间用于记住上下文 - 由其他类似命令控制(h, x, g, ...)

我对自己说:这不能变得更直观吗?即使用更详细的命令(例如print代替p)和更多buffer – 根据我的需要的标准变量(例如lastUserSeen)?

然后有人告诉我

不,绝不使用h或除 s、g 和 p(带 -n)之外的任何其他 sed 结构,或者您实际上使用的是在 1970 年代中期 awk 发明时就已过时的结构。如今,人们使用这些其他结构只是为了进行智力锻炼,而不是认真编写软件,因为等效的 awk 解决方案将更清晰、更高效、更便携、更容易维护/增强,并且在其他所有有意义的方面都更好。

awk?我立即跳了起来并爱上了它。我的许多多行程序在第一次运行时就可以工作,无需任何调试。从我此后对awk的研究来看,我认为它能够完全取代sed。或者是否有一些 sed 功能(我错过了)的效果不能通过 awk 轻松实现?awk 用户有什么理由运行 sed 吗?

编辑:这不是一个“哪个更好”的问题,而是功能集的比较。 sed 中是否有一个功能无法在 awk 中同样有效地实现,但它需要更多的 awk 代码?

答案1

对于就地编辑文件的快速而简单的方法,sed-i 功能比使用 构建类似的东西要容易得多awk。我承认使用gawk1.4.0 或更高版本的平台确实具有“就地”功能来解决此问题。

sed -i 's/foo/bar/' filename

sed由于所有现有脚本都使用它,所以我很不情愿地学习了它。如果有选择,在编写新脚本时,awk通常会获胜,代码的可读性和可维护性要高得多。

相关内容