gpt4 book ai didi

regex - "partial grep"加快grep速度?

转载 作者:太空狗 更新时间:2023-10-29 11:43:24 25 4
gpt4 key购买 nike

这就是我的想法:grep 程序尝试对行中出现的每个模式进行模式匹配,就像:

echo "abc abc abc" | grep abc --color

结果是三个 abc 都是红色的,所以 grep 对该行进行了完整的模式匹配。

但是想想在这个场景中,我有很多大文件要处理,但是我感兴趣的词很可能出现在前几个词中。我的工作是找出其中没有文字的台词。因此,如果 grep 程序可以在找到单词后继续下一行而无需检查该行的其余部分,它的速度可能会明显加快。

grep 中是否有部分匹配 选项来执行此操作?

喜欢:

echo abc abc abc | grep --partial abc --color

只有第一个 abc 是红色的。

最佳答案

查看 grep 内部的精彩介绍:

http://lists.freebsd.org/pipermail/freebsd-current/2010-August/019310.html

特别是:

GNU grep AVOIDS BREAKING THE INPUT INTO LINES. Looking for newlines would slow grep down by a factor of several times, because to find the newlines it would have to look at every byte!

So instead of using line-oriented input, GNU grep reads raw data into a large buffer, searches the buffer using Boyer-Moore, and only when it finds a match does it go and look for the bounding newlines. (Certain command line options like -n disable this optimization.)

所以答案是:不。grep 查找搜索字符串的下一个匹配项比查找新行要快得多。

编辑:关于对 color=never 的评论中的推测可以解决问题:我快速浏览了源代码。变量 color_option 不会在实际搜索正则表达式或之前和即将到来的换行符附近的任何地方使用,以防找到匹配项。

在搜索那些行终止符时,可能会节省几个 CPU 周期。可能真实世界的差异表现为病态的长行和非常短的搜索字符串。

关于regex - "partial grep"加快grep速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32099346/

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