如何根据指定的行数来分割CSV文件?

我有存储在LINUX服务器上的CSV文件(大约10,000行;每行有300列)。 我想把这个CSV文件分解成每个20条logging的500个CSV文件。 (每个CSV文件头都与原始CSV中的相同)

有没有什么Linux命令来帮助这种转换?

这工作:

tail -n +2 file.txt | split -l 20 - split_ for file in split_* do head -n 1 file.txt > tmp_file cat $file >> tmp_file mv -f tmp_file $file done 

find: http : //edmondscommerce.github.io/linux/linux-split-file-eg-csv-and-keep-header-row.html

使用Linux拆分命令:

 split -l 20 file.txt new 

将文件“file.txt”拆分成以“new”开头的文件,每个文件包含20行文本。

在Unix提示符处键入man split以获取更多信息。 但是,您必须首先从file.txt中删除标题(例如,使用tail命令),然后将其重新添加到每个分割文件中。

这应该为你做 – 所有的文件将最终称为Part1-Part500。

 #!/bin/bash FILENAME=10000.csv HDR=$(head -1 $FILENAME) # Pick up CSV header line to apply to each file split -l 20 $FILENAME xyz # Split the file into chunks of 20 lines each n=1 for f in xyz* # Go through all newly created chunks do echo $HDR > Part${n} # Write out header to new file called "Part(n)" cat $f >> Part${n} # Add in the 20 lines from the "split" command rm $f # Remove temporary file ((n++)) # Increment name of output part done