5

我将 sed 用于批量 ptovess,而我无法使用 awk 来完成。awk 能做到吗?还是更多的是选择问题并调用 awk 和 sed 等效的用法。他们都使用 i/o 进行常见的搜索替换。有没有一个很好的例子,一个不能做而另一个不能做?

4

5 回答 5

9

一个主要区别是 awk 程序可以保持状态,并且可以对同一数据使用多次传递。sed 调用必然是无状态的单通道,因为 sed(流编辑器)本质上是面向流的。不过,优点是这使得 sed 更简单,更适合在管道链中使用。

于 2009-08-30T10:34:28.950 回答
7

在原始(并且仍然是最好的)书籍The AWK Programming Language中,实现了以下内容(以及许多其他内容):

  • 一个简单的汇编器
  • 递归下降编译器
  • 一个文本索引程序

尝试使用 sed 执行此操作。

于 2009-08-30T10:37:50.707 回答
3

天,

awk 更强大。sed 的功能往往受到更多限制。

Sed 适用于基于行的数据更改。它有一些简单的循环结构、常用的 ed/ex/vi 正则表达式和替换、复合语句、决策等。大多数人使用它来修改管道数据。

awk 非常适合过滤或重新排列数据。它主要用于报告。

我建议看看 Dale Dougherty 的优秀书籍“sed & awk”(经过消毒的亚马逊链接)。顺便说一句,那里也有对正则表达式的最佳解释之一。

很多人会说无论如何都要使用 Perl!(-:

编辑:忘了说 awk 语言很像 C,这并不奇怪,因为 awk 中的“k”代表 Brian Kernighan。是的。那个布赖恩·克尼汉!

此外,sed 仅适用于数据流,而 awk 则适用于数据流和文件。

高温高压

干杯,Sed 仅适用于数据流,而 awk 适用于数据流和文件。

于 2009-08-30T10:33:01.527 回答
3

我唯一能想到的是 sed 可以在 awk 的更少字符数上做一些小的改变。因此,对于实时 shell 的快速调整,打字速度更快。

于 2009-08-30T12:01:52.610 回答
2

SED 是一个流编辑器,因此没有变量,也没有像 AWK 那样的一些其他结构。AWK 是一种成熟的语言。

于 2009-08-30T10:27:42.863 回答