【问题标题】:How to use ripgrep in Ubuntu to search line in a CSV file如何在 Ubuntu 中使用 ripgrep 搜索 CSV 文件中的行
【发布时间】: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 不能神奇地让它更快。

标签: shell ubuntu grep ripgrep


【解决方案1】:

该程序名为ripgrep,但它由rg 调用。您需要做的就是:

rg -w 'abs' try.csv

【讨论】:

    猜你喜欢
    • 2023-02-18
    • 1970-01-01
    • 1970-01-01
    • 2014-02-25
    • 2018-09-25
    • 2012-08-26
    • 1970-01-01
    • 1970-01-01
    • 2019-08-01
    相关资源
    最近更新 更多