unix - 为什么 grep 需要这么多时间?

标签 unix grep tcl

我正在使用 grep 来计算文件 graph.tcl 中字符串“^mj”的出现次数。
我写的命令很简单,你很容易理解。

grep "^mj " mjwork/run/graph.tcl | wc -l



它输出 46625但在 ~45 min 之后.你们能提出一个更好的方法来减少时间吗?

最佳答案

以下行可能会使其更快:

$ awk '/^mj/{c++}END{print c}' file

这只会处理文件一次,并且只会打印匹配的总数。这与您最初要求 grep 将所有内容打印到缓冲区并再次使用 wc 处理的情况相反。 .

最后,你也可以这样做:
$ grep -c '^mj' file

它只返回总匹配。这可能比 awk 版本还要快。默认情况下,awk 将尝试进行字段拆分,上述 grep 不需要此操作。

有很多原因会导致您的进程运行缓慢、磁盘负载过重、使用它时 nfs 运行缓慢、需要解析的行非常长……没有关于输入文件和运行它的系统的更多信息,很难说为什么它这么慢。

关于unix - 为什么 grep 需要这么多时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7007791/

相关文章:

linux - Grep Next Line Only If Two Lines above Match String 连续

linux - grep 交替搜索

perl - 如何将 $_ 的值更改为 perl 中 grep 中所需的值?

python - python 2.5 是否具有与 Tcl 的 uplevel 命令等效的功能?

mysql - 如何从期望脚本中的转储文件加载 MySQL DB

bash - SSH 不从命令行退出

linux - 如果两个目录共有,则更新文件;如果在一个目录中唯一,则删除该文件

linux - 带有特殊字符的 sed

c - 缺少用于 Tcl C 扩展的内置命令 "history"

regex - 如何比较两个文件之间字段的特定部分