gpt4 book ai didi

unix - 在unix中查找文件中字符串的快速方法

转载 作者:行者123 更新时间:2023-12-03 23:30:14 24 4
gpt4 key购买 nike

我想在 unix 的文件中找到字符串模式。我使用以下命令:

$grep 2005057488 filename

但是文件包含数百万行,我有很多这样的文件。除了 grep 之外,获取模式的最快方法是什么?

最佳答案

grep通常尽可能快。它专为一件事而设计——而且它做得很好。您可以阅读原因 here .

但是,为了加快速度,您可以尝试一些方法。首先,看起来您要查找的模式是固定字符串。幸运的是,grep有一个“固定字符串”选项:

-F, --fixed-strings
Interpret PATTERN as a list of fixed strings, separated by newlines, any of which is to be matched. (-F is specified by POSIX.)

其次,因为 grepUTF-8 上通常很慢,您可以尝试通过设置环境来禁用国家语言支持 (NLS) LANG=C .因此,您可以尝试这种混合物:
LANG=C grep -F "2005057488" file

第三,您的问题不清楚,但是如果您只尝试查找文件中是否存在某项内容,您还可以尝试添加最大次数来查找模式。因此,当 -m 1 , grep将在第一次出现后立即退出。您的命令现在可能如下所示:
LANG=C grep -m 1 -F "2005057488" file

最后,如果你有一个多核 CPU,你可以给 GNU parallel去。它甚至带有 explanation of how to use it with grep .每个核心运行 1.5 个作业并向 grep 提供 1000 个参数:
find . -type f | parallel -k -j150% -n 1000 -m grep -H -n STRING {}

grep并行使用的大文件 --pipe :
< bigfile parallel --pipe grep STRING

根据您的磁盘和 CPU,读取更大的块可能会更快:
< bigfile parallel --pipe --block 10M grep STRING

关于unix - 在unix中查找文件中字符串的快速方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13622645/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com