gpt4 book ai didi

bash - Grepping 一个 1M 行文件,其中包含存储在另一个文件中的 320K 模式

转载 作者:行者123 更新时间:2023-12-04 18:01:34 25 4
gpt4 key购买 nike

我试图 grep 1M 行 '|'将具有 320K 模式的文件与另一个文件分开,并通过管道传输到 Ole Tange 的并行包并将匹配的结果传输到另一个文件中。我在具有 24 个内核和 16GB 物理内存的 Windows 7 上使用 Cygwin。

我通过这个链接后使用的命令 Grepping a huge file (80GB) any way to speed it up?

< matchReport1.dat parallel --pipe --block 2M LC_ALL=C grep --file=nov15.DAT > test.match

其中 matchReport1.dat 是 1M 行 '|'分离文件和 320K 花样存储在 nov15.DAT 中。任务管理器事件影响了所有 24 个内核,物理内存使用量跃升至 ~15GB,我开始收到 grep 内存已耗尽的消息。

然后我尝试将 nov15.DAT 模式文件分成 10 个较小的 block 并运行这些 block 的 grep

parallel --bar -j0 -a xaa "LC_ALL=C grep {} matchReport1.dat"> testxaa

但这花费的时间太长了(30K 行中只有 1.6K 行 grepping 花费了 15 分钟)。

我的 nov15.DAT 模式文件由像“A12345M”这样的字符串和这个模式需要匹配的文件组成,即 matchReport1.dat 有像“A12345M_dfdf”和“A12345M_02”这样的字符串,所以不能在 grep 中使用 -F 选项。有人可以建议修复或使用数据库以外的任何其他选项吗?

这是一个示例

nov15.DAT -> http://pastebin.com/raw/cUeGcYLb

matchReport1.dat -> http://pastebin.com/raw/01KSGN6k

最佳答案

我假设您只想将 nov15.DAT 中的字符串与 matchReport1.dat 中第二列的开头进行比较。

试试这个:修改 nov15.DAT 以避免在每一行中从第一个字符到最后一个字符进行比较:

sed 's/.*/^"[^|]*"|"&/' nov15.DAT > mov15_mod1.DAT

然后将 mov15_mod1.DAT 与您的并行命令一起使用。

关于bash - Grepping 一个 1M 行文件,其中包含存储在另一个文件中的 320K 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34513869/

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