分割大型csv文件并在每个部分保留标题

ech*_*cho 4 csv bash split

如何分割一个较大的csv文件(〜100GB)并在每个部分保留标题?

例如

h1 h2
a  aa
b  bb
Run Code Online (Sandbox Code Playgroud)

进入

h1 h2
a  aa
Run Code Online (Sandbox Code Playgroud)

h1 h2
b  bb
Run Code Online (Sandbox Code Playgroud)

Aar*_*ron 5

首先,您需要将标题和内容分开:

header=$(head -1 $file)
data=$(tail -n +2 $file)
Run Code Online (Sandbox Code Playgroud)

然后您想分割数据

echo $data | split [options...] -
Run Code Online (Sandbox Code Playgroud)

在选项中,您必须指定块的大小和结果文件名称的模式。尾随-必须删除,因为它指定split从stdin读取数据。

然后您可以在每个文件的顶部插入标题

sed -i "1i$header" $splitOutputFile
Run Code Online (Sandbox Code Playgroud)

您显然应该在for循环中做最后一部分,但是其确切代码将取决于为split操作选择的前缀。