首页 > 解决方案 > 按日期列拆分 csv 并保存到不同的文件夹

问题描述

我有一个这样的 csv 文件。

预算.csv

id,date,budget
1,2019/11/01,100
1,2019/11/02,300
1,2019/11/03,200
2,2019/11/01,600
2,2019/11/02,500
2,2019/11/03,400

如何按日期拆分 CSV 文件并将其保存到不存在的不同位置?我想要的输出结构是这样的。

./2020/11/01/budget.csv
./2020/11/02/budget.csv
./2020/11/03/budget.csv

我尝试了类似的awk -F'[,]' '{print >> "./2020/11/01/'$2'.csv"}' budget.csv方法,但我需要修复创建新文件夹并以某种方式拆分日期。有什么建议么?我在 Mac OS 上运行。

标签: bashshellcsvawk

解决方案


请您尝试以下方法:

while IFS="," read -r id date budget; do
    if ((nr++)); then                   # skip the header line
        mkdir -p "$date"                # mkdir recursively
        echo "$id,$date,$budget" >> "$date/budget.csv"
    fi
done < budget.csv

推荐阅读