按行数拆分CSV并保留标题

时间:2019-07-16 06:04:08

标签: csv awk

我有此命令按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

如何保留标题和功能?

1 个答案:

答案 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