拆分 CSV 文件的问题

use*_*619 1 shell-script text-processing csv split

我正在尝试使用以下命令将 csv 文件拆分为多个文件。此命令拆分为 5 个文件,但数据在其中一个文件中被截断?

我该如何解决这个问题?

>>split -n 5 -d -a 2  testfile
Run Code Online (Sandbox Code Playgroud)

我的输入中有 5001 行,但拆分分为

file1 - 932
file2 - 910
file3 - 1149
file4 - 1044
file5 - 966
Run Code Online (Sandbox Code Playgroud)

每个文件不应该是 1000 行吗?

Joh*_*024 8

split -n 5将文件分成五个部分,使除最后一部分外的所有部分都具有相同的字节数

如果您只想在线条边界上进行拆分,请使用:

split -n l/5 -d -a 2  testfile
Run Code Online (Sandbox Code Playgroud)

这在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
Run Code Online (Sandbox Code Playgroud)

另一种选择是指定每个输出文件中所需的行数:

split -l 1000 -d -a 2  testfile
Run Code Online (Sandbox Code Playgroud)

上面将文件分成几部分,每个部分(除了最后一个)有 1,000 行。这被记录为:

'-l lines'
'--lines=lines'
     将输入行放入每个输出文件中。