linux - 如何将基于日期的 CSV 文件转换为电子表格?

标签 linux excel csv transformation

我有这样一个文件:

100,2015-09-01
100,2015-09-02
105,2015-09-01
645,2017-01-01

它只是一个数字和一个逗号分隔的日期。它有 20000 行。

我想将此文件转换为电子表格(Google、Excel、LibreOffice、任何格式,甚至 CSV),如果每个数字在给定日期出现,它会显示该数字。例如:

ID  | 2015-09-01 | 2015-09-02 | 2017-01-01
----+------------+------------+-----------
100 | YES        | YES        | NO
105 | YES        | NO         | NO
645 | NO         | NO         | YES

我该怎么做?

我在 Linux 上,所以像 sedawk 等命令行实用程序是可用的,并且是自动执行此操作的首选方法。

最佳答案

可以使用 AWK 使其工作。

awk -F "," '{
    numbers[$1]
    dates[$2]
    number_date[$1,$2]
} END {
    for (number in numbers) printf ";%s", number;
    printf "\n"
    for (date in dates) {
       printf "%s", date
       for (number in numbers)
          if ((number SUBSEP date) in number_date) printf ";YES"
          else printf ";NO"
       printf "\n"
    }
}' input.csv | sort > output.csv

关于linux - 如何将基于日期的 CSV 文件转换为电子表格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41987928/

相关文章:

linux - 为什么程序头段虚拟地址是0x40004000?

c++ - LD_PRELOAD 是否适用于所有版本的 unix/linux?

python - 如何让 python 等到 Excel 宏/刷新完成

javascript - 在列中包含键的堆积图

python - 如何将用户输入放入 CSV 文件?

file - 如何在powershell中比较两个csv文件而不指定属性

python - 如何手动安装 cx_Oracle rpm?

mysql - 将数据从 Excel 传输到 MySQL 服务器数据库?

excel - 通过互操作在 Excel 中绘制网格线

linux - GZIP 不适用于压缩多个文件