我有一个大文本文件中要替换的单词列表。我想知道哪个命令 sed/awk 最适合执行该操作。 sed/awk 是否逐行读取文本文件或将整个文件加载到内存中?
答案1
答案很明确:这取决于。
这取决于您如何定义“最佳”。快点?比较容易写?读书?维持?更便携?更优雅?
这取决于具体的任务。
sed
正如 r-31415 在评论中声称的那样,通常可能会更快,但取决于替换的定义方式(单词如何限制,单词的部分内容可以匹配吗?)的有限可能性sed
可能需要一些使其落后的操作awk
。这取决于实施。这两个命令都是逐行工作的,都使用正则表达式进行替换,因此正则表达式引擎很可能决定执行速度。它的优化程度如何?它使用预编译模式吗?它甚至可能取决于它运行的硬件! BSD 实现在 ARM 上运行得更快,而 GNU 实现在 AMD64 上运行得更快。
让我反问一个问题:你为什么想知道?