【发布时间】:2019-10-30 09:11:20
【问题描述】:
我需要将一个大的 csv 文件转换为 Kirby CMS 的静态内容格式。
假设我有一个 csv 文件:
id,name,age,bio
0,bob,25,"Example bio, with a comma"
1,sam,37,"Hello World"
...
我想像这样重组成单独的文件夹/文件:
1_bob/person.txt
ID: 0
----
Name: bob
----
Age: 25
----
Bio: Example bio, with a comma
2_sam/person.txt
ID: 1
----
Name: sam
----
Age: 37
----
Bio: Hello World
等等……
这显然是我数据的一个更加简化的版本,因此我曾考虑使用 csvkit,因为它能够正确解析引用字段等中的逗号。
我找到了这个脚本:https://forum.getkirby.com/t/import-from-csv/6038/15,由于上述问题(基本 bash IFS 无法读取更复杂的 CSV 数据)而失败
#!/bin/bash
OLDIFS=$IFS
IFS=";"
while read number year title website slug
do
if [ ! -d "$number-$slug" ]; then
mkdir ./$number-$slug
fi
echo -e "Year: $year\n----\nTitle: $title\n----\nWebsite: $website" > $number-$slug/project.txt
done < projects.csv
IFS=$OLDIFS
我知道我可以编写一个 python 脚本来轻松完成此操作,但我想知道是否确实有一种方法可以结合 csvkit 的任何工具在 bash 脚本中执行此操作。我的假设是使用csvcut 将数据行从 csv 中提取出来,但当然我仍然处于如何解析这些数据并将其输出为所需格式的同一块。
【问题讨论】: