我有一个100GB的文本文件。该文件中的数据采用以下格式:
email||username||password_hash
我正在测试6GB文件,我通过拆分较大的文件单独制作。
我正在运行grep
以匹配这些行并输出它们。
我使用了grep
。这需要大约1分22秒
我在grep
上使用了其他选项,例如LC_ALL=C and -F
,但时间缩短为1 minute 15 seconds
,对于6GB文件仍然不佳。
然后我使用了ripgrep,
它在我的机器上取27 seconds
,仍然不太好。
然后我使用ripgrep with -F option
,它正在使用14 seconds
,仍然不太好。
我尝试了ag also (the silver searcher)
,但我发现它不适用于大于2 GB的文件。
我需要你的帮助哪个命令行工具(或语言)可以获得更好的结果,或者某种方式我可以利用数据格式来按列搜索。就像我按用户名搜索一样,然后我只搜索第二列,而不是匹配整行。我尝试使用awk
,但速度仍然较慢。
答案 0 :(得分:0)
如果你必须只做一次:使用grep并等到它完成。
如果在600GB csv文件中搜索字符串是常规过程的一部分,那么您将不得不更改该过程。选项包括:使用数据库而不是文本文件,使用map / reduce并将负载分散到多台机器和核心(hadoop),...