使用标题分割文件

使用标题分割文件

我可以将一个大文件拆分成 3 或 4 个部分。但是有没有办法重复 csv 文件的标题?

# split -b 10G user_logs.csv

这将创建 xaa、xab 和 xac。原始标头现在是 xaa 的一部分。如何将此行复制到 xab 和 xac?

# head user_logs.csv
msno,date,num_25,num_50,num_75,num_985,num_100,num_unq,total_secs
rxIP2f2aN0rYNp+toI0Obt/N/FYQX8hcO1fTmmy2h34=,20150513,0,0,0,0,1,1,280.3350
rxIP2f2aN0rYNp+toI0Obt/N/FYQX8hcO1fTmmy2h34=,20150709,9,1,0,0,7,11,1658.9480

我是否需要为每个文件重复这 3 行?

head -1 user_logs.csv > xab_temp
cat xab >> xab_temp
mv xab_temp xab

答案1

您可以尝试使用--filter。类似以下内容:

split -b 10G \
 --filter='if [ ! "$FILE" = "xaa" ]; then echo "$header" > "$FILE";fi;cat >> "$FILE"' file

例子:

$ cat file
this is the header
1
2
3
4
5
6
7
8
9
10
$ export header=$(head -n 1 file)
$ split -l 3 --filter='if [ ! "$FILE" = "xaa" ] ; then echo "$header" > "$FILE" ; fi ; cat >> "$FILE"' file 
$ for x in x* ; do echo "== $x" ; cat $x ; done
== xaa
this is the header
1
2
== xab
this is the header
3
4
5
== xac
this is the header
6
7
8
== xad
this is the header
9
10

相关内容