如何分割一个较大的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)
首先,您需要将标题和内容分开:
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操作选择的前缀。