猿问

如何将大型文本文件拆分为行数相等的较小文件?

如何将大型文本文件拆分为行数相等的较小文件?

我有一个大的(按行数)纯文本文件,我想把它分割成更小的文件,也按行数来划分。因此,如果我的文件有大约200万行,我想将它分成10个包含200 k行的文件,或者100个包含20k行的文件(再加上一个包含其余部分的文件;是否均匀可除并不重要)。

在Python中,我可以很容易地做到这一点,但我想知道是否有一种使用bash和unix utils(而不是手动循环和计数/分区行)的忍者方法。


至尊宝的传说
浏览 680回答 3
3回答

郎朗坤

你看过拆分命令了吗?$ split --help Usage: split [OPTION] [INPUT [PREFIX]] Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default size is 1000 lines, and default PREFIX is `x'.  With no INPUT, or when INPUT is -, read standard input. Mandatory arguments to long options are mandatory for short options too.   -a, --suffix-length=N   use suffixes of length N (default 2)   -b, --bytes=SIZE        put SIZE bytes per output file   -C, --line-bytes=SIZE   put at most SIZE bytes of lines per output file   -d, --numeric-suffixes  use numeric suffixes instead of alphabetic   -l, --lines=NUMBER      put NUMBER lines per output file       --verbose           print a diagnostic to standard error just                             before each output file is opened       --help     display this help and exit       --version  output version information and exit你可以这样做:split -l 200000 filename,它将创建文件,每个文件都有200000行名为xaa xab xac ...另一个选项,按输出文件的大小拆分(仍在断线上拆分): split -C 20m --numeric-suffixes input_filename output_prefix创建这样的文件output_prefix01 output_prefix02 output_prefix03 ...每个最大尺寸20兆字节。

温温酱

是的,有一个split命令。它将按行或字节拆分文件。$ split --help Usage: split [OPTION]... [INPUT [PREFIX]] Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default size is 1000 lines, and default PREFIX is `x'.  With no INPUT, or when INPUT is -, read standard input. Mandatory arguments to long options are mandatory for short options too.   -a, --suffix-length=N   use suffixes of length N (default 2)   -b, --bytes=SIZE        put SIZE bytes per output file   -C, --line-bytes=SIZE   put at most SIZE bytes of lines per output file   -d, --numeric-suffixes  use numeric suffixes instead of alphabetic   -l, --lines=NUMBER      put NUMBER lines per output file       --verbose           print a diagnostic just before each                             output file is opened       --help     display this help and exit       --version  output version information and exit SIZE may have a multiplier suffix: b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024, GB 1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y.
随时随地看视频慕课网APP
我要回答