首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >高效搜索排序文件

高效搜索排序文件
EN

Ask Ubuntu用户
提问于 2014-02-20 21:26:59
回答 3查看 7.6K关注 0票数 13

我有一个大文件,每一行包含一个字符串。我希望能够快速确定文件中是否有字符串。理想情况下,这将使用二进制chop类型的算法来完成。

一些谷歌用户透露了带有look标志的-b命令,该标志承诺使用二进制搜索算法定位和输出以给定前缀开头的所有字符串。不幸的是,它似乎不能正常工作,并且返回我知道在文件中的字符串的空结果(它们由等价的grep搜索正确地返回)。

是否有人知道另一种有效搜索该文件的实用工具或策略?

EN

回答 3

Ask Ubuntu用户

发布于 2014-02-20 21:47:16

greplook之间有一个本质的区别:

除非另有明确说明,grep甚至会在行中的某个地方找到模式。对于look,命令页声明:

以给定字符串开头的显示行

我并不经常使用look,但在我刚刚尝试过的一个简单示例中,它确实运行得很好。

票数 12
EN

Ask Ubuntu用户

发布于 2018-07-02 03:55:49

也许是有点晚的回答:

斯格里普会帮你的。

Sgrep (已排序的grep)搜索排序后的输入文件中匹配搜索键并输出匹配行的行。在搜索大型文件时,sgrep比传统的Unix要快得多,但有很大的限制。

  • 所有输入文件必须按常规文件排序。
  • 排序键必须从行的开头开始。
  • 搜索键仅在行的开头匹配。
  • 不支持正则表达式。

您可以在这里下载源代码:https://sourceforge.net/projects/sgrep/?source=typ_重定向

这里的文件是:http://sgrep.sourceforge.net/

另一种方式是:

我不知道您应该尝试并行的file.Maybe有多大:

https://stackoverflow.com/questions/9066609/fastest-possible-grep

我总是用大于100 do的文件来做grep,它工作得很好。

票数 4
EN

Ask Ubuntu用户

发布于 2015-11-22 19:35:46

sgrep可能会为你工作:

代码语言:javascript
复制
sudo apt-get install sgrep
sgrep -l '"needle"' haystack.txt

项目页面http://sgrep.sourceforge.net/说:

Sgrep使用二进制搜索算法,该算法非常快速,但需要排序输入。

但是,对于插入,我认为没有比使用数据库更好的解决方案了:https://stackoverflow.com/questions/10658380/shell-one-liner-to-add-a-line-to-a-sorted-file/33859372#33859372

票数 0
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/423886

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档