gpt4 book ai didi

linux - 如何将具有制表符分隔值的大文件拆分为较小的文件,同时根据第一个值将行保留在单个文件中?

转载 作者:太空宇宙 更新时间:2023-11-04 04:48:17 25 4
gpt4 key购买 nike

我有一个文件(当前约为 1 GB,40M 行),我需要根据目标文件大小(目标为每个文件约 1 MB)将其拆分为较小的文件。

该文件包含多行制表符分隔值。第一列有一个整数值。文件按第一列排序。第一列中有大约 1M 个值,因此每个值平均有 40 行,但有些值可能有 2 行,其他可能有 100 行或更多行。

12\t...
12\t...
13\t...
14\t...
15\t...
15\t...
15\t...
16\t...
...
2584765\t...
2586225\t...
2586225\t...

分割文件后,任何不同的第一个值只能出现在单个文件中。例如。当我读取一个较小的文件并找到以 15 开头的行时,可以保证没有其他文件包含以 15 开头的行。

意味着将以特定值开头的所有行映射到单个文件。

这可以通过 Unix/Linux 系统上可用的命令行工具实现吗?

最佳答案

下面将尝试每 40,000 条记录进行拆分,但如果下一条记录与前一条记录具有相同的键,则推迟拆分。

awk -F '\t' 'BEGIN { i=1; s=0; f=sprintf("file%05i", i) }
NR % 40000 == 0 { s=1 }
s==1 && $1!=k { close(f); f=sprintf("file%05i", ++i); s=0 }
{ k=$1; print >>f }' input

关于linux - 如何将具有制表符分隔值的大文件拆分为较小的文件,同时根据第一个值将行保留在单个文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21184219/

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