【问题标题】:Split CSV by number of rows and keep headers [duplicate]按行数拆分CSV并保留标题[重复]
【发布时间】:2019-11-24 19:36:27
【问题描述】:

我有这个命令可以按行数分割 csv,line= 部分。 但是这个 cmd 不保留原始文件的标题,我需要在那里有标题。你能帮我么?我发现我需要单独保留标题,然后以某种方式添加行数。

它加载output.csv 文件,并在一个名为output<number>.csv 的结果文件中将其每33 行拆分一次,并在扩展名之前使用数字从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

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

【问题讨论】:

    标签: csv awk


    【解决方案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 个文件:

    输出1.csv

    header
    1a
    2a
    3a
    

    输出2.csv

    header
    1b
    2b
    3b
    

    output3.csv

    header
    1c
    2c
    3c
    

    如果你写了很多文件,别忘了close

    【讨论】:

    • @EdMorton 我确实问过自己这个问题!我很懒,没有完整阅读我提供的链接 close() silently does nothing if given an argument that does not represent a file, pipe, or coprocess that was opened with a redirection. 。谢谢你:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-24
    相关资源
    最近更新 更多