搜索100 GB文件中的字符串

时间:2018-04-18 20:23:33

标签: python linux bash perl awk

我有一个100GB的文本文件。该文件中的数据采用以下格式:

email||username||password_hash

我正在测试6GB文件,我通过拆分较大的文件单独制作。

我正在运行grep以匹配这些行并输出它们。

  1. 我使用了grep。这需要大约1分22秒

  2. 我在grep上使用了其他选项,例如LC_ALL=C and -F,但时间缩短为1 minute 15 seconds,对于6GB文件仍然不佳。

  3. 然后我使用了ripgrep,它在我的机器上取27 seconds,仍然不太好。

  4. 然后我使用ripgrep with -F option,它正在使用14 seconds,仍然不太好。

  5. 我尝试了ag also (the silver searcher),但我发现它不适用于大于2 GB的文件。

  6. 我需要你的帮助哪个命令行工具(或语言)可以获得更好的结果,或者某种方式我可以利用数据格式来按列搜索。就像我按用户名搜索一样,然后我只搜索第二列,而不是匹配整行。我尝试使用awk,但速度仍然较慢。

1 个答案:

答案 0 :(得分:0)

如果你必须只做一次:使用grep并等到它完成。

如果在600GB csv文件中搜索字符串是常规过程的一部分,那么您将不得不更改该过程。选项包括:使用数据库而不是文本文件,使用map / reduce并将负载分散到多台机器和核心(hadoop),...