首页 > 解决方案 > 按行数拆分 CSV 并保留标题

问题描述

我有这个命令按行数拆分 csv,line=部分。但是这个 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

如何保留标题并保留我的功能?

标签: csvawk

解决方案


假设 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 个文件:

输出1.csv

header
1a
2a
3a

输出2.csv

header
1b
2b
3b

输出3.csv

header
1c
2c
3c

如果您写入许多文件,请不要忘记关闭。


推荐阅读