我尝试使用以下命令将 csv 文件拆分为多个文件。该命令拆分为 5 个文件,但其中一个文件中的数据被截断?
我该如何解决这个问题?
>>split -n 5 -d -a 2 testfile
我的输入中有 5001 行,但分割分为
file1 - 932
file2 - 910
file3 - 1149
file4 - 1044
file5 - 966
每个文件不应该是1000行吗?
答案1
split -n 5
将文件分成五个部分,使除最后一部分之外的所有部分都具有相同的数量字节。
如果您只想在行边界上进行分割,请使用:
split -n l/5 -d -a 2 testfile
这在GNU 文档用于split
如下:
'-n chunks'
'--number=chunks'
将输入拆分为块输出文件,其中块可能是:n generate n files based on current size of input k/n only output kth of n to stdout l/n generate n files without splitting lines l/k/n likewise but only output kth of n to stdout r/n like ‘l’ but use round robin distribution r/k/n likewise but only output kth of n to stdout
另一个选项是指定每个输出文件中需要多少行:
split -l 1000 -d -a 2 testfile
上面将文件分成几个部分,每个部分(最后一个除外)有 1,000 行。这被记录为:
'-llines'
'--lines=lines'
将lines行输入到每个输出文件中。
答案2
使用-l
的选项split
。从手册页:
-l line_count
Create smaller files n lines in length.
例如
split -l 1000 afile.txt