Мне нужно преобразовать большой 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 который не удается в результате вышеуказанной проблемы (неспособность базового IFS bash читать более сложные данные 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, но, конечно, я все еще в том же блоке, как анализировать эти данные и выводить их в желаемый формат.