[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
呵呵,又是效率的话题。!
我说两句。。
首先,我不同意楼主的说的 sed 效率低下。
楼主的测试代码只能说是在批处理中频繁调用外部命令会使批处理运行效率低。而不是命令本身效率低。
关于此话题在我的另一帖中曾讨论过
http://bbs.bathome.net/thread-2089-1-1.html

如果楼主想证实的是这三个命令“匹配文本的速度”那么你的代码不能说明什么。
而应该是用以下的方式测试。

以大小为 2.22m 的a.txt文件为测试样本。
以下三句代码都是匹配 a.txt 中以 ok 开头的行,速度都是快的惊人!
  1. for /f "delims= " %%a in (a.txt) do if "%%a"=="ok" echo %%a
  2. findstr "^ok" a.txt
  3. sed -n "/^ok/p" a.txt
  4. pause
复制代码
但功能却各有不同,
for 虽说速度也快,但受特殊字符的限制,且若是需要对每行都进行处理时速度是不及sed之万一的。
findstr 可以匹配指定的行,但无法对其进行处理,且匹配的局限性很大。
而sed 是有名的文本流编辑器,以功能强大和高效著称。可以匹配各种自定义条件的行并对其进行处理。
5楼说的好, 用最合适的代码做最合适的事。

楼主不防试试分别用 for 和 sed 给文档每行开头都加一个字符串,看看谁更快?
或是替换每行的指定字符串?
或是给文档的第某行至某行的字符串进行替换?

sed 效率并不慢,只是楼主的使用方法不当而以。。(仅对顶楼测试代码而言)

[ 本帖最后由 随风 于 2008-10-12 01:50 编辑 ]
技术问题请到论坛发帖求助!

TOP

返回列表