我使用sed作为批处理ptovess,我用awk无法做到这一点。 vould awk已经做到了吗?或者更多的是选择问题,并调用awk和sed等效的用法。它们都使用与i / o类似的常见搜索替换。是否有一个很好的例子,另一个人不能做什么呢?
答案 0 :(得分:9)
一个主要区别是awk程序可以维护状态,并且可以使用相同数据的多次传递来操作。 sed调用必然是无状态单遍,因为sed(Stream EDitor)本质上是面向流的。但优点是,这使得sed更简单,更适合在管道中使用。
答案 1 :(得分:7)
答案 2 :(得分:3)
我唯一能想到的是,sed可以在awk中减少char数量。因此,对于实时shell的快速调整,输入速度会更快。
答案 3 :(得分:2)
SED是一个流编辑器,因此没有变量和其他一些像AWK这样的结构。 AWK是一门完全成熟的语言。
答案 4 :(得分:2)
天儿真好,
Awk更强大。 sed往往在它能做的事情上受到更多的限制。
Sed适用于基于行的数据更改。它有一些简单的循环结构,通常的ed / ex / vi正则表达式和替换东西,复合语句,决策等等。大多数人用它来修改管道数据。
Awk适用于过滤或重新排列数据。它主要用于报告。
我建议看看Dale Dougherty出色的书“sed& awk”(sanitised Amazon link)。顺便说一下,这也是regexp的最佳解释之一。
很多人会说使用Perl! ( - :
编辑:忘了说awk语言非常像C,因为awk中的'k'代表Brian Kernighan,这并不奇怪。是。 那 Brian Kernighan!
此外,sed仅适用于数据流,而awk适用于数据流和文件。
HTH
欢呼声,Sed只适用于数据流,而awk适用于数据流和文件。