【问题标题】:Editing then combining large number of CSV in Mac terminal在 Mac 终端中编辑然后合并大量 CSV
【发布时间】:2020-09-16 12:40:00
【问题描述】:

我有一个包含 ~8400 个大型 CSV 文件的文件夹:

  • 2 列
  • ~17k 行

我厌倦了在终端中将所有内容与 cat 合并,并得到一个 3.2 GB 的 CSV 文件,当我尝试导入时 Excel 只是嘲笑它。所以我需要在合并它们之前把它们变小,这样我就可以开始处理 Excel 中的数据了。幸运的是,我只需要一小部分数据。

基本上,这是一个可以追溯到 2018 年 1 月的每小时时间序列(第一列是日期/时间),但我只需要过去 90 天的结束日期数

  • 提取每个 CSV (90*24) 的最后约 2160 行
  • 我还需要一个分隔符来显示每个表在合并后从哪里开始,因此在提取最后约 2160 行之后,我想在每个表的开头插入一行,文件名不带扩展名。
  • 删除除每天最后一条记录之外的所有记录。

根据我的计算,这使我的行数不到 80 万行,而 Excel 应该能够打开这些行。

我认为 sed 可以完成所有这些,然后 cat 合并新编辑的文件,但这超出了我的能力。非常感谢任何帮助。谢谢。

【问题讨论】:

    标签: macos csv sed terminal cat


    【解决方案1】:

    这是一个极其简化的版本,您可以从中推断。

    我的目录中有五个文件:

    $ ls folder-with-files/
    a   b   c   d   e
    

    每个文件有五行。

    $ cat folder-with-files/a
    1
    2
    3
    4
    5
    
    $ cat folder-with-files/b
    10
    11
    12
    13
    14
    15
    

    等等

    现在假设我想要每个文件的最后两行。那里的关键是tail 命令。在此之前,我将根据您的规范回显文件名。

    $ for f in folder-with-files/*; do echo "FILE: " $f; tail -2 $f; done > big.csv
    

    结果:

    $ cat big.csv
    FILE:  folder-with-files/a
    4
    5
    FILE:  folder-with-files/b
    14
    15
    FILE:  folder-with-files/c
    24
    25
    FILE:  folder-with-files/d
    34
    35
    FILE:  folder-with-files/e
    44
    45
    

    【讨论】:

    • 这个周末我会试一试。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-11
    • 1970-01-01
    • 2015-08-27
    • 2014-02-05
    • 2012-12-22
    • 2016-10-01
    • 1970-01-01
    相关资源
    最近更新 更多