将大txt文件分割成某些小文件

将大txt文件分割成某些小文件

我有一个 txt 文件,格式为 250,000 * 3600(3600 行和 250,000 列),我将把它分成 3600 个小 txt,每个文件为 250,000 * 1。

我理解分割基本上可以将大文件分割成具有一定大小的小文件。如果我采用相同的技术,我将获得相同大小的文件,但每个文件可以是 249,999 * 1 或 250,001 *1。

谁可以帮我这个事?

答案1

我建议写一个小脚本:

NR_LINES=$(wc -l your-file | awk '{ print $1 }')
for line in {1..$NR_LINES}; do
  head -n $line your-file | tail -n 1 > your-file.part$line
done

这会将文件的行数保存在变量中NR_LINES。也许您的文件包含的行数比您感兴趣的行数多。在这种情况下,您应该自己设置变量。该脚本从 1 迭代到文件中的最后一行。对于每次运行,它都会打印第一个n行 ( $line)。这通过管道传输到tail,它仅打印最后一行并将结果保存在文件中。

答案2

您可以csplit通过使用模式/^/匹配行开头来分割成每一行。参数{*}重复该模式直到输入结束。

csplit --elide-empty-files input.txt '/^/' '{*}'

如果没有--elide-empty-files(或-z),索引为 0 的文件将为空。

相关内容