gpt4 book ai didi

PERL:跳转到巨大文本文件中的行

转载 作者:行者123 更新时间:2023-12-02 18:05:36 25 4
gpt4 key购买 nike

我有一个非常大的文本文件(~4 GB)。它具有以下结构:

S=1
3 lines of metadata of block where S=1
a number of lines of data of this block
S=2
3 lines of metadata of block where S=2
a number of lines of data of this block
S=4
3 lines of metadata of block where S=4
a number of lines of data of this block
etc.

我正在编写一个读取另一个文件的 PERL 程序,对于该文件的每一行(其中必须包含数字),在大文件中搜索该数字减 1 的 S 值,然后分析该S值所在 block 的数据行。

问题是,文本文件很大,所以用一个处理每一行

foreach $line {...} loop

非常慢。由于S=值是严格递增的,有没有办法跳转到所需S值的特定行?

最佳答案

are there any methods to jump to a particular line of the required S-value?

是的,如果文件没有更改,则创建索引。这需要完整读取一次文件,并使用 tell 记下所有 S=# 行的位置。 。 Store it in a DBM file键是数字,值是文件中的字节位置。然后你可以使用seek to jump to that point in the file and read from there .

但如果您要这样做,最好将数据导出到适当的数据库中,例如 SQLite 。编写一个程序将数据插入数据库并添加普通的 SQL 索引。这可能比编写索引更简单。然后您可以使用普通 SQL 高效地查询数据,并进行复杂的查询。如果文件发生更改,您可以重做导出,或使用正常的 insertupdate SQL 来更新数据库。对于任何了解 SQL 的人来说,它都可以轻松使用,而不是一堆自定义索引和搜索代码。

关于PERL:跳转到巨大文本文件中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51811911/

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