grep -i -A 5 -B 5 'db_pd.Clients' eightygigsfile.sql
Run Code Online (Sandbox Code Playgroud)
这已经在相当强大的Linux服务器上运行了一个小时,否则不会超载.grep的替代方案?关于我的语法有什么可以改进的,(egrep,fgrep更好吗?)
该文件实际上位于与另一台服务器的挂载共享的目录中,但实际的磁盘空间是本地的,所以不应该有任何区别?
grep占用了高达93%的CPU
dog*_*ane 138
以下是一些选项:
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
Run Code Online (Sandbox Code Playgroud)
如果将文件复制到RAM磁盘,速度也会更快.
Ste*_*eve 31
如果你有一个多核CPU,我真的建议GNU并行.要并行使用grep大文件:
< eightygigsfile.sql parallel --pipe grep -i -C 5 'db_pd.Clients'
Run Code Online (Sandbox Code Playgroud)
根据您的磁盘和CPU,读取较大的块可能会更快:
< eightygigsfile.sql parallel --pipe --block 10M grep -i -C 5 'db_pd.Clients'
Run Code Online (Sandbox Code Playgroud)
你的问题并不完全清楚,但其他选择grep包括:
-i旗帜.-F固定字符串的标志LANG=C-m标志设置最大匹配数.| 归档时间: |
|
| 查看次数: |
61156 次 |
| 最近记录: |