我有此命令按line=
部分的行数拆分csv。
但是,此cmd不会保留原始文件的标头,而我需要在其中包含标头。你能帮我么?我发现我需要分别保留标题,然后以某种方式添加n行。
它将加载output.csv
文件,并在结果文件中每33行对其进行拆分,该结果文件称为output<number>.csv
,扩展名前的数字从1开始。
awk -v N=1 -v pre="output" -v suf=".csv" -v line=33 'NR%line==1{x=pre N suf ;N++} {print > x}' output.csv
如何保留标题和功能?
答案 0 :(得分:1)
假设output.csv是
header
1a
2a
3a
1b
2b
3b
1c
2c
3c
只需修复一点代码:
awk -v pre="output" -v suf=".csv" -v line=3 '
NR == 1 {
header = $0
next
}
NR % line == 2 {
close(x)
N++
x = pre N suf
print header > x
}
{
print > x
}
' output.csv
创建3个文件:
output1.csv
header
1a
2a
3a
output2.csv
header
1b
2b
3b
output3.csv
header
1c
2c
3c
如果您写入许多文件,请不要忘记close。