【发布时间】:2023-03-30 14:07:01
【问题描述】:
我的主目录中有一个 csv 文件,如下所示
cat try.csv
val1,val2,val3,val4,val5,val6
10-Jul-19,12604876601113439,Self,abs,Tier-I,30088.5
09-Jul-19,12604876601112397,Self,abs,Tier-I,200590
08-Jul-19,12604876601111807,Self,abs,Tier-I,200590
05-Jul-19,12604876601109069,Self,abs,Tier-I,70206.5
29-May-19,12604876601085648,Self,cdf,Tier-I,70206.5
30-Apr-19,12604876601068094,Self,cdf,Tier-I,130383.5
15-Nov-18,12604876600900949,Self,xyz,Tier-I,71209.46
10-Oct-18,12604876600887501,Self,xyz,Tier-I,79233.06
我可以使用grep 命令提取包含单词'abs'的行:
grep -w 'abs' try.csv
10-Jul-19,12604876601113439,Self,abs,Tier-I,30088.5
09-Jul-19,12604876601112397,Self,abs,Tier-I,200590
08-Jul-19,12604876601111807,Self,abs,Tier-I,200590
05-Jul-19,12604876601109069,Self,abs,Tier-I,70206.5
但是我在https://blog.burntsushi.net/ripgrep/ 中遇到过ripgrep,它声称具有与grep 类似的功能,但执行速度更快(我的实际 csv 文件非常大,大小为 30gb,所以我需要一些比grep)
所以我用cargo install ripgrep 安装了ripgrep 并在下面运行代码
ripgrep -w 'abs' try.csv
但我得到以下错误
Command 'ripgrep' not found, did you mean:
command 'sipgrep' from deb sipgrep
command 'zipgrep' from deb unzip
Try: apt install <deb name>
任何以正确方式使用 ripgrep 的指针都会有所帮助
【问题讨论】:
-
如果更快,请告诉我们。祝你好运。
-
我没有看到很大的改进。但我愿意接受任何其他选项以更快地处理 27gb 文件
-
如果您可以重新组织文件以便可以使用行首锚或行尾锚 reg-ex(
^或$),这可能会有所帮助。或者让它分多个部分交付,然后您可以使用gnuparallel运行多个 grep。你不会比基本的 grep 更快,它优化的 C 代码(40 多年了)。祝你好运。 -
ripgrep 在很多情况下都比基本的 grep 更快。请参阅基准。但是,如果您的文件是 27GB 并且不能全部放入内存,那么您可能只是被底层 I/O 设备的速度所阻塞。 ripgrep 不能神奇地让它更快。