bash - 以任何方式加速一个巨大的文件(80GB)?

标签 bash grep

 grep -i -A 5 -B 5 'db_pd.Clients'  eightygigsfile.sql

这已经在一个相当强大的 linux 服务器上运行了一个小时,否则不会重载。 grep 的任何替代品?关于我的语法的任何可以改进的地方,(egrep,fgrep 更好?)

该文件实际上位于与挂载到另一台服务器共享的目录中,但实际磁盘空间是本地的,所以应该没有什么区别?

grep 占用了高达 93% 的 CPU

最佳答案

这里有几个选项:

1) 在您的 grep 命令前加上 LC_ALL=C 以使用 C 语言环境而不是 UTF-8。

2) 使用 fgrep 因为您要搜索的是固定字符串,而不是正则表达式。

3) 如果不需要,请删除 -i 选项。

所以你的命令变成:

LC_ALL=C fgrep -A 5 -B 5 'db_pd.Clients' eightygigsfile.sql

如果您将文件复制到 RAM 磁盘,它也会更快。

关于bash - 以任何方式加速一个巨大的文件(80GB)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13913014/

相关文章:

linux - grep 如何知道它正在写入输入文件?

regex - 使用 Sed/awk/grep 或任何其他工具在 Linux 环境中提取子字符串

bash - 如何尽可能紧凑地确定最新的主要和完整内核版本字符串

regex - 如何 grep 和过滤日期和特定字段的日志

bash 错误?不能使用 negate extglob !(*/) 来过滤目录?

linux - bash 双括号问题

c - 找不到 perl 命令

shell - 需要从 grep 的输出中删除路径而不是文件

bash - Ansible:如何使用 Ansible chmod +x 文件?

.net - 如何在 CodeDeploy 完成部署后保持应用程序运行